.net 如何将AutoCompleteXtender设置为只允许自动完成列表中的值?
有人知道使用AJAX Control Toolkit中的AutoCompleteXtender如何防止用户输入任何不在建议值中的内容吗?首先,请检查您是否愿意使用新的AjaxToolKit组合框 如果您不能,例如,如果您使用的是.NETFramework2.0,您可以操纵AutoComplete来满足您的需求,但这是一个令人头痛的问题,而不是控件的真正用途 检查应该在javascript内部进行,您可以添加一个事件来捕获选中的内容。 然后创建一个函数: 函数指定选定的发送方,e { -在此验证 } 另一个选项是要求用户通过操纵事件从列表中选择值: onchange、onclick和onblur。但要找到合适的组合需要一些时间.net 如何将AutoCompleteXtender设置为只允许自动完成列表中的值?,.net,asp.net,ajaxcontroltoolkit,.net,Asp.net,Ajaxcontroltoolkit,有人知道使用AJAX Control Toolkit中的AutoCompleteXtender如何防止用户输入任何不在建议值中的内容吗?首先,请检查您是否愿意使用新的AjaxToolKit组合框 如果您不能,例如,如果您使用的是.NETFramework2.0,您可以操纵AutoComplete来满足您的需求,但这是一个令人头痛的问题,而不是控件的真正用途 检查应该在javascript内部进行,您可以添加一个事件来捕获选中的内容。 然后创建一个函数: 函数指定选定的发送方,e { -在此验证
为了让您振作起来,我会告诉您,我们可能已经完成了,但由于版权问题,我无法附加我们的代码。类似的内容可以帮助您 Javascript
<script type="text/javascript">
var isItemSelected = false;
//Handler for AutoCompleter OnClientItemSelected event
function onItemSelected() {
isItemSelected = true;
}
//Handler for textbox blur event
function checkItemSelected(txtInput) {
if (!isItemSelected) {
alert("Only choose items from the list");
txtInput.focus();
}
}
</script>
ASPX
如果用户最初从列表中选择一个项目,然后返回并决定键入一个值,则先前使用布尔值isItemSelected提交的答案将无法工作 为防止出现这种情况,还应出现一个事件,当输入聚焦时,该事件会将isItemSelected重置为false: ASPX 或 使用在选择时触发的JS事件,并将值从文本框复制到隐藏字段。然后使用隐藏字段中的值进行处理 ASPX JS 但是等等。。。还有更多 为了增强上述功能,可以向文本框添加模糊事件,以验证文本框值是否与隐藏字段中的值匹配,并在值不匹配时清除文本框
//remove value if not selected from drop down list
$('#<%=tb1.ClientID%>').blur(function () {
if ($('#<%=hf1.ClientID%>').val() !== $(this).val()) {
$(this).val("");
//optionally add a message near the input
}
});
这将使用户清楚地看到输入不被接受。很抱歉稍微更改了一下主题,但ComboBox是否可以配置为在按下下一个字母时从codebehind加载匹配项?我相信这需要一些操作。
<asp:TextBox onblur="checkItemSelected(this)" onfocus="resetItemSelected()"../>
function resetItemSelected() {
isItemSelected = false;
}
<asp:HiddenField runat="server" ID="hf1"/>
<asp:TextBox runat="server" ID="tb1"></asp:TextBox>
<ajax:AutoCompleteExtender ID="ace1" runat="server" TargetControlID="tb1" OnClientItemSelected="userSelected" .../>
function userSelected(sender, e) {
var selectedItem = e.get_value();
$get("<%= hf1.ClientID%>").value = selectedItem;
return false;
}
//remove value if not selected from drop down list
$('#<%=tb1.ClientID%>').blur(function () {
if ($('#<%=hf1.ClientID%>').val() !== $(this).val()) {
$(this).val("");
//optionally add a message near the input
}
});