Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何将AutoCompleteXtender设置为只允许自动完成列表中的值?_.net_Asp.net_Ajaxcontroltoolkit - Fatal编程技术网

.net 如何将AutoCompleteXtender设置为只允许自动完成列表中的值?

.net 如何将AutoCompleteXtender设置为只允许自动完成列表中的值?,.net,asp.net,ajaxcontroltoolkit,.net,Asp.net,Ajaxcontroltoolkit,有人知道使用AJAX Control Toolkit中的AutoCompleteXtender如何防止用户输入任何不在建议值中的内容吗?首先,请检查您是否愿意使用新的AjaxToolKit组合框 如果您不能,例如,如果您使用的是.NETFramework2.0,您可以操纵AutoComplete来满足您的需求,但这是一个令人头痛的问题,而不是控件的真正用途 检查应该在javascript内部进行,您可以添加一个事件来捕获选中的内容。 然后创建一个函数: 函数指定选定的发送方,e { -在此验证

有人知道使用AJAX Control Toolkit中的AutoCompleteXtender如何防止用户输入任何不在建议值中的内容吗?

首先,请检查您是否愿意使用新的AjaxToolKit组合框

如果您不能,例如,如果您使用的是.NETFramework2.0,您可以操纵AutoComplete来满足您的需求,但这是一个令人头痛的问题,而不是控件的真正用途

检查应该在javascript内部进行,您可以添加一个事件来捕获选中的内容。 然后创建一个函数: 函数指定选定的发送方,e { -在此验证 } 另一个选项是要求用户通过操纵事件从列表中选择值: onchange、onclick和onblur。但要找到合适的组合需要一些时间


为了让您振作起来,我会告诉您,我们可能已经完成了,但由于版权问题,我无法附加我们的代码。

类似的内容可以帮助您

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
    }
});