嗨我有一個jquery自動完成工作正常提出的建議,但當我點擊建議列表中的項目我無法得到任何事件觸發。即使在相同的文本框中,我也可以使用鍵盤來填充基於輸入數據的列表框。我需要發生的事情是點擊自動完成建議時觸發與關鍵點相同的事情。它適用於向下箭頭選擇,但不是鼠標點擊。jquery ui自動完成建議列表單擊事件
這裏是asp.net代碼:
<asp:TextBox ID="txtSearch" runat="server" Width="450px" />
這是自動完成jquery的:
$("#<%=txtSearch.ClientID %>").autocomplete({
source: function(request, response) {
$.ajax({
url: '../WebServices/ModelSearch.asmx/JquerySearchSrn',
data: "{ 'prefixText': '" + request.term + "'}",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
success: function(data) {
response($.map(data.d, function(item) {
return {
label: item.split('|')[0],
val: item.split('|')[1]
}
}))
},
error: function(response) {
alert(response.responseText);
},
failure: function(response) {
alert(response.responseText);
}
});
},
select: function() {
debugger;
$('#<%=lsResults.ClientID %>').children().remove();
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
//data: "{ prefixText: '" + $('#<%=txtSearch.ClientID %>').val() + "', count: '5'}",
data: "{ sText: '" + $('#<%=txtSearch.ClientID %>').val() + "', sFilter: '" + $('#<%=ddlProductLine.ClientID %>').val() + "'}",
url: "../WebServices/ModelSearch.asmx/GetResults",
dataType: "json",
success: function(data) {
//debugger;
var results = data.d;
//alert(results.length.toString());
if (results.length > 0) {
var listItems = [];
var j = 1;
//for (var i in results) {
for (i = 0; i < results.length; i += 2) {
//debugger;
listItems.push('<option value="' +
results[i] + '">' + results[j]
+ '</option>');
//key + '">' + results[key].text
//i++;
j += 2;
}
$('#<%=lsResults.ClientID %>').append(listItems.join(''));
$('#<%=lsResults.ClientID %>').attr('size', 10);
/* test event.type and event.target to capture only select control changes */
}
},
error: function(response) {
alert(response.responseText);
}
});
},
minLength: 2
});
我也有這個作爲txtSearch KeyUp事件:
$('#<%=txtSearch.ClientID %>').keyup(function() {
if ($('#<%=txtSearch.ClientID %>').val().length > 1) {
$('#<%=lsResults.ClientID %>').children().remove();
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
//data: "{ prefixText: '" + $('#<%=txtSearch.ClientID %>').val() + "', count: '5'}",
data: "{ sText: '" + $('#<%=txtSearch.ClientID %>').val() + "', sFilter: '" + $('#<%=ddlProductLine.ClientID %>').val() + "'}",
url: "../WebServices/ModelSearch.asmx/GetResults",
dataType: "json",
success: function(data) {
//debugger;
var results = data.d;
//alert(results.length.toString());
if (results.length > 0) {
var listItems = [];
var j = 1;
//for (var i in results) {
for (i = 0; i < results.length; i += 2) {
//debugger;
listItems.push('<option value="' +
results[i] + '">' + results[j]
+ '</option>');
//key + '">' + results[key].text
//i++;
j += 2;
}
$('#<%=lsResults.ClientID %>').append(listItems.join(''));
$('#<%=lsResults.ClientID %>').attr('size', 10);
/* test event.type and event.target to capture only select control changes */
}
},
error: function(response) {
alert(response.responseText);
}
});
}
});
我試着只是調用txtSearch的.keyup函數,所以我不必重複代碼但它不起作用,除非我在Chrome的Javascript控制檯中執行。 有沒有人有任何建議或ieas如何使這個功能正常?
謝謝 彌敦道
'debugger'語句是否會觸發? –