1

各行にオートコンプリート機能を備えたテキストボックスがあるテーブルがあります。サーバーコードでは、次のようになります

<td><asp:TextBox ID="tbNumber" runat="server" onfocus="AttachNumbers(this)" /></td>

クライアントで

function AttachNumbers(sender) {
    $(sender).autocomplete({ source: GetNumbers, minLength: 2 });
}

function GetNumbers(request, response) {
    $.ajax({
        type: "POST",
        url: AJAXSERVICEMETHOD,
        data: "{ 'term': '" + request.term + "', 'count': 10 }",
        contentType: "application/json; charset=utf-8",
        dataType: "json",

        success:
            function(data, textStatus, jqXHR) {
                response(data.d);
                //HighlightError(HOW TO GET CONTROL HERE?);
            },
        error:
            function(jqXHR, textStatus, errorThrown) {
            }
    });
}

ユーザーがリストから番号を選択しなかった場合(私が持っている関数を使用してHighlightError(controlid))、テキストボックスを強調表示する必要があります。これを行う方法は?

4

1 に答える 1

1

jQuery.proxy を使用して、コンテキストとして関数に渡すsenderことができます。GetNumbers

function AttachNumbers(sender) {
    var sourceProxy = $.proxy(GetNumbers, sender);
    $(sender).autocomplete({ source: sourceProxy, minLength: 2 });
}

function GetNumbers(request, response) {
    var target = this;
    $.ajax({
        type: "POST",
        url: AJAXSERVICEMETHOD,
        data: "{ 'term': '" + request.term + "', 'count': 10 }",
        contentType: "application/json; charset=utf-8",
        dataType: "json",

        success:
            function(data, textStatus, jqXHR) {
                response(data.d);
                // target refers to sender control
                //HighlightError(HOW TO GET CONTROL HERE?);
            },
        error:
            function(jqXHR, textStatus, errorThrown) {
            }
    });
}
于 2013-02-20T10:00:07.423 に答える