如何识别jQuery和代码之间的ASP控件?

时间:2015-09-24 23:31:24

标签: c# jquery asp.net

我有这个让自动完成:

jQuery(function($) {
    $("input[type='text']").autocomplete();
    $("input[type='text']").keyup(function(event) {
        var $this = $(this);
        var id = $this.attr('name');
        var params = {'id': id, 'partial': $this.val()};
        var jsonParams = JSON.stringify(params);
        $.ajax({
            type: "POST",
            url: "MyPage.aspx/GetAutoCompleteList",
            data: jsonParams,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(msg) {
                $this.autocomplete('option','source', JSON.parse(msg.d));
            }
        });
    });
});

以及一种称呼方式:

[WebMethod]
public static String GetAutoCompleteList(string id, string partial)
{
    AutoCompleter completer;
    switch (id)
    {
        case "first-name":
            completer = first_names;
            break;
        case "last-name":
            completer = last_name;
            break;
        case "site":
            completer = site_numbers;
            break;
        case "institution":
            completer = institutions;
            break;
        // ....
        default:
            return "[]";
    }
    return jsSerializer.Serialize(toUse.CloseMatches(partial));
}

AutoCompleter只找到一些可能的匹配并将它们作为数组返回。

我遇到了问题,因为我不确定如何实际识别输入。这是一个例子:

<asp:TextBox runat="server" name="first-name" id="first-name" AutoPostBack="true"></asp:TextBox>

$this.attr('name')无法返回first-name。相反,它是一些自动生成的ASP.NET废话。什么是明确识别此输入的简单方法?

我的意思是,我们可以这样做:

<div class="hacky" name="first-name" style="display:none"></div>
<asp:TextBox ... ></asp:TextBox>

var id = $this.siblings(".hacky").attr('name');

但必须有一种更简单的方法。

1 个答案:

答案 0 :(得分:2)

  1. 您可以通过添加以下内容为文本输入使用静态ID:
  2.   

    ClientIDMode =“静态”

    1. 如果您有很多,可以在web.config中使用静态ID。

    2. 您可以使用一些自定义属性,例如attr-data-id =(AspControll).ClientID