簡體   English   中英

調試器未達到 jQuery.autocomplete 中的 select 語句

[英]Debugger not reaching select statement in jQuery.autocomplete

我在ASP.NET頁面中有一個動態網格。 當我單擊Add User時,它會創建一個帶有 Textbox 控件的空記錄,並且當用戶在第一個Textbox - UserName中鍵入內容時,它應該從數據庫中提取UserNames並且autocomplete應該適用於該 Textbox 控件。

我已經實現jQuery.autocomplete function 如下。

jQuery("#" + e.id).autocomplete({
    source: function (request, response) {
        var txtSearch = jQuery("#" + e.id).attr("id");                        
        var t = jQuery("#" + txtSearch).val();      
        var URL = "../Users.aspx?UserName=" + t;           
        jQuery.ajax({
            url: URL,
            success: function (data) {
                switch (data) {                        
                    case 'NOVALUESFOUND':
                        var rftspanID = e.id.replace("txt", "span");
                        break;
                    default:
                        var rftspanID = e.id.replace("txt", "span");
                        var rows = data.split("|");
                        var jsStr = "var datalist=[";
                        for (i = 0; i < rows.length - 1; i++) {
                            var s = rows[i].toString();
                            s = s.replace("'", "\\'");
                            s = s.replace('"', "\\'");
                            var row = s.split("~");

                            jsStr += "{id:'" + row[0].toString() + "'";
                            jsStr += ",name:'" + row[1].toString() + "'},";
                        }
                        jsStr = jsStr.slice(0, jsStr.length - 1);
                        jsStr += "];";
                        eval(jsStr);
                        if (typeof (datalist) != 'undefined') {
                            response(jQuery.map(datalist, function (items) {
                                if (items.id != undefined) {
                                    return {
                                        value: items.name,
                                        id: items.id
                                    }
                                }
                            }));
                        }
                }
            }
        });
    },
    minlength: 1,
    select: function (event, ui) {
        if (Type == 1) {
            document.getElementById("txtUser" + MemCount).value = ui.item.value;
        }
        else if (Type == 2) {                
            document.getElementById("txtRole" + MemCount).value = ui.item.value;
        }
    },
    open: function () {
        jQuery(this).removeClass("ui-corner-all").addClass("ui-corner-top");
    },
    close: function (event) {
        jQuery(this).removeClass("ui-corner-top").addClass("ui-corner-all");
    }
});

當我嘗試調試此自動完成時,數據將出現在response(jQuery.map(datalist, function (items)語句的末尾。但是select:選項未觸發。

編輯

下面的屏幕截圖顯示了數據是如何形成的。

項目

這就是服務器端 Users.aspx.vb Page_Load 事件中存在的內容

Response.Clear()
Response.Write(GetUserName(Request.QueryString("UserName")))
Response.End()

可能是什么問題呢?

第一的。 在響應中,您檢查 swith 中的數據變量。 你得到它作為一個字符串。 第二。 使用 ajax 的最佳方式是 JSON。

jQuery.ajax({
         url: url,
         dataType: 'json'

成功響應:進行解析。

json = JSON.parse(data)

然后你已經應用了你的邏輯,我使用單獨的 object 變量。

swith(json.string){ .... }

使用必要的參數填充文本框控件會更容易:json.user - 該變量將包含有關用戶的數據數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM