2014-11-01 33 views
0

am使用Ajax AutoCompleteExtenderasp textbox如下。Ajax autocomplete Extender防止在文本框中鍵入無效值

它的正常工作,但是, 問題:時,這是無效或不從數據庫中值相匹配的用戶類型的文本,它應該顯示像「關鍵字不匹配......」

消息給用戶代碼

<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設置爲隱藏字段

請給我建議。

謝謝。

回答

0

加入您的AUTOEXTENDER:

<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>