我有一个带自动完成功能的文本框。
在从自动填充列表中选择数据然后在输入key press
时,它会触发
文字改变事件。
但我想在选择数据时触发文本更改事件。
function abc(sender, args) {
$(function () {
$("#<%=txtNumber.ClientID %>").autocomplete({
source: function (request, response) {
$.ajax({
url: '<%=ResolveUrl("~/Webservice.asmx/abc") %>',
data: "{ 'prefix': '" + request.term + "'}",
dataType: "json",
type: "POST",
async: false,
mustMatch: true,
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) {
},
failure: function (response) {
}
});
},
select: function (e, i) {
$("#<%=hdnNumber.ClientID %>").val(i.item.val);
if (i.item.val == "No Records Found") {
$("#<%=hdnNumber.ClientID %>").val(-1);
document.getElementById('<%=txtNumber.ClientID%>').value = "";
return false;
}
},
minLength: 0
}).bind('focus', function () { $(this).autocomplete("search"); });
});
}
答案 0 :(得分:0)
当您选择自动填充值时,文本框KeyDown
事件将与keyCode
13一起触发。
要检测列表中的项目何时被选中,您可以执行以下操作:
Private Sub TextBox1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
If e.KeyCode = 13 Then
MsgBox("Autocomplete value selected")
End If
End Sub
答案 1 :(得分:0)
如果您感觉舒服,请尝试使用以下代码。
aspx页面:
<asp:TextBox ID="txtNumber" runat="server" style="font-weight: 700"
AutoPostBack="True" ontextchanged="txtNumber_TextChanged"></asp:TextBox>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:AutoCompleteExtender ServiceMethod="SearchCustomers"
MinimumPrefixLength="1"
CompletionInterval="100" EnableCaching="false" CompletionSetCount="10"
TargetControlID="txtNumber"
ID="AutoCompleteExtender1" runat="server" FirstRowSelected = "false">
代码背后:
[System.Web.Script.Services.ScriptMethod()]
[System.Web.Services.WebMethod]
public static List<string> SearchCustomers(string prefixText, int count)
{
List<string> customers = new List<string>();
customers.Add(Your Values); // Your auto complete values
}
您也可以绑定数据库值。如果我混淆了你的想法,请告诉我。