Ajax自动完成扩展程序阻止在文本框中键入无效值

时间:2014-11-01 11:03:29

标签: javascript jquery asp.net ajaxcontroltoolkit

我在Ajax AutoCompleteExtender中使用asp textbox,如下所示。

它工作正常,但是, 问题:当用户输入无效或与数据库值不匹配的文字时,应向用户显示“关键字不匹配...”的消息

代码

<asp:HiddenField id ="hdnFieldValue" runat="server"/>
<asp:TextBox ID="txtContactsSearch" runat="server"></asp:TextBox>
<cc1:AutoCompleteExtender ServiceMethod="SearchCustomers" 
    MinimumPrefixLength="2"
    CompletionInterval="100" OnClientItemSelected="ClientItemSelected" UseContextKey="true" EnableCaching="false" CompletionSetCount="10" 
    TargetControlID="txtContactsSearch"
    ID="AutoCompleteExtender1" runat="server" FirstRowSelected = "false">
</cc1:AutoCompleteExtender>

Java脚本代码

<script type="text/javascript">
        function ClientItemSelected(sender, e) {
            $get(e.get_value());
            $get("<%=hdnFieldValue.ClientID %>").value = e.get_value();
        }
    </script>

我使用上面的javascript方法获得了asp hidden field的价值。但是,当用户键入无效文本时,我想将Empty设置为隐藏字段

请给我建议。

感谢。

1 个答案:

答案 0 :(得分:0)

添加您的自动转发器:

  <cc1:AutoCompleteExtender   ServiceMethod="SearchCustomers"  OnClientPopulated="ClientPopulated" 
</cc1:AutoCompleteExtender>

JS:从下面你可以用结果突出显示你的文字,就像检查文字一样

      <script type="text/javascript">
         function ClientPopulated(source, args) {
        if (source._currentPrefix != null) {
            var list = source.get_completionList();

            var search = source._currentPrefix.toLowerCase();

            for (var i = 0; i < list.childNodes.length; i++) {
                var text = list.childNodes[i].innerHTML;
                var index = text.toLowerCase().indexOf(search);
                if (index != -1) {
                    var value = text.substring(0, index);  

   </script>