jquery.autocomplete 傳參問題


今天遇到一個問題,我需要傳一個文本庫的內容給后台,然后用autocomplete顯示內容,開始覺得很簡單

不就是

 

function SalePrice_Complete(text) {
         //分割拿到索引
          var value=$("#MaterielID_" + text.selector.split('_')[1]).val();
            text.autocomplete("/Control/webControl.ashx",
                   {
                       dataType: 'json', //返回數據類型
                       width: 220,
                       minChars: 0,
                       extraParams: { Method: "SalePriceAutoComplate",MaterielID:value},
                       parse: function (data) { //后台返回的數據傳給自定義的rows   
                           var rows = [];
                           for (var i = 0; i < data.length; i++) {
                               rows[rows.length] = {
                                   data: "[" + data[i].FPirce + "   " + data[i].FDate + "]", //顯示在搜索界面的列表
                                   value: data[i].FPirce , //查詢結果
                                   result: data[i].FPirce //顯示在文本框的內容
                               };
                           }
                           return rows;
                       },
                       formatItem: function (row, i, n) {
                           return row;
                       }
                   }).result(function (event, item, returnvalue) {
                       var values = returnvalue;
                       var index = text[0].id;
                       var i = index.split('_')[1];
                       //物料編號
                       $("#price_" + i).val(values[0]);
                   });
        };

但是代碼運行后發現,MaterielID得到是空的,想了很久不知道為什么,於是在后台和js都下了斷點,再運行,發現js沒有再運行過了,但是后台卻斷點斷到了

所以我們可以推斷,變量是要動態賦值的

於是參考了下網上的代碼,修改成

 function SalePrice_Complete(text) {
         
            text.autocomplete("/Control/webControl.ashx",
                   {
                       dataType: 'json', //返回數據類型
                       width: 220,
                       minChars: 0,
                       extraParams: { Method: "SalePriceAutoComplate",MaterielID:function(){ return $("#MaterielID_" + text.selector.split('_')[1]).val()}},
                       parse: function (data) { //后台返回的數據傳給自定義的rows   
                           var rows = [];
                           for (var i = 0; i < data.length; i++) {
                               rows[rows.length] = {
                                   data: "[" + data[i].FPirce + "   " + data[i].FDate + "]", //顯示在搜索界面的列表
                                   value: data[i].FPirce , //查詢結果
                                   result: data[i].FPirce //顯示在文本框的內容
                               };
                           }
                           return rows;
                       },
                       formatItem: function (row, i, n) {
                           return row;
                       }
                   }).result(function (event, item, returnvalue) {
                       var values = returnvalue;
                       var index = text[0].id;
                       var i = index.split('_')[1];
                       //物料編號
                       $("#price_" + i).val(values[0]);
                   });
        };

這樣后台拿到MaterielID就有值了,事實證明,在對代碼機制不熟悉的情況下,用正常思維去推只能讓你陷入煩惱和氣憤中,想着明明有賦值,怎么到后台就不見了,所以還是多用斷點多調試,用事實說話


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM