jquery.ajax()未按条件触发

jquery.ajax()未按条件触发,jquery,asp.net,ajax,Jquery,Asp.net,Ajax,我在jquery ajax()调用之前放置了一个条件,它不再触发。我基本上只希望在有人点击文本框中的enter键时,ajax()调用fire ajax()调用在没有$(“[id$=txtSearch]”)的情况下可以正常工作 我做错了什么?还有别的办法吗 $("[id$=txtSearch]").keyup(function (e) { if (e.keyCode == 13) { $(this).trigger("enterKey"); } }); $("[i

我在jquery ajax()调用之前放置了一个条件,它不再触发。我基本上只希望在有人点击文本框中的enter键时,ajax()调用fire

ajax()调用在没有
$(“[id$=txtSearch]”)的情况下可以正常工作

我做错了什么?还有别的办法吗

$("[id$=txtSearch]").keyup(function (e) {
    if (e.keyCode == 13) {
        $(this).trigger("enterKey");
    }
});

$("[id$=txtSearch]").bind("enterKey", function (e) {
    var query = $("[id$=txtSearch]").val();
    alert(query); // This works 
            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: "Viewer.aspx/GetSearchResults",
                dataType: "json",
                data: JSON.stringify({ docID: docid, query: query, 
                      pageNumber: 1, resultsPerPage: 10 }),
                success: function (response) {
                    alert(response.d.TotalResults);
                },
                error: function (xhr, status, error) {
                    var err = eval("(" + xhr.responseText + ")");
                    alert(err.Message);
                    alert("responseText=" + xhr.responseText + 
                           "\n textStatus=" + status + "\n 
                           errorThrown=" + error);
                }
            });
        });
和我的文本框:

 <asp:TextBox ID="txtSearch" runat="server" TextMode="Search" 
    AutoCompleteType="Search" placeholder="Search for text in the document..." 
    AutoPostBack="true" ToolTip="Search for text in the document..." >
 </asp:TextBox>

您只需使用选择器的id即可


尝试使用
$('#txtSearch')
而不是
$(“[id$=txtSearch]”

尝试用

$(function(){
    $("#txtSearch").keyup(function (e) {
        if (e.keyCode == 13) {
            $(this).trigger("enterKey");
        }
    });

    $("#txtSearch").bind("enterKey", function (e) {
        var query = $("#txtSearch").val();
        alert(query); // This works 
        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "Viewer.aspx/GetSearchResults",
            dataType: "json",
            data: JSON.stringify({ docID: docid, query: query, pageNumber: 1, resultsPerPage: 10 }),
            success: function (response) {
                alert(response.d.TotalResults);
            },
            error: function (xhr, status, error) {
                var err = eval("(" + xhr.responseText + ")");
                alert(err.Message);
                alert("responseText=" + xhr.responseText + "\n textStatus=" + status + "\n errorThrown=" + error);
            }
        });
   });
});

您是否可以与
keydown
而不是
keyup
共享输入元素htmltry。keyup不是问题所在。它很好用。由于警报(查询)未显示,因此条件正常工作。当我遇到这种情况时,ajax()调用不会触发。我试过了。由于某种原因,它不起作用。我知道那个部分无论如何都在工作…$(“[id$=txtSearch]”)工作正常。由于某些原因,其他语法没有。我不认为这是问题所在,因为警报(查询)在该条件之后工作。只是.ajax调用不起作用。如果删除行“data:JSON.stringify({docID:docID,query:query,pageNumber:1,resultsPerPage:10})”,它会起作用吗?ajax调用在前面没有$(“#txtSearch”).bind(“enterKey”,function(e){。