我在jquery ajax()调用之前设置了一个条件,它不再触发。我基本上只希望ajax()在有人点击进入文本框时调用火。
ajax()调用在没有$("[id$=txtSearch]").bind
条件的情况下正常工作。
我做错了什么?还有另一种方法可以解决这个问题吗?
$("[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>
答案 0 :(得分:0)
您只需使用您的选择器的ID。
尝试使用$('#txtSearch')
代替$("[id$=txtSearch]")
答案 1 :(得分:0)
尝试通过
替换你的JS$(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);
}
});
});
});