检查文本框中的值是否仅从自动完成值中输入。

问题描述:

我正在开发一个Web应用程序。为了输入值我使用自动完成从数据库中获取其数据。检查文本框中的值是否仅从自动完成值中输入。

$(document).ready(function hello(){ 
    var myVar1 = <%=request.getAttribute("variable1")%> 
     $("input#assignedbyid").autocomplete({ 
    source: myVar1 
     }); 
}); 

上面给定的例子给我一个组被从使用JDBCjson代码数据库拾取值。在任何时间点在myvar1值看起来像这样::

["Kapil","Mayur","Abhinav","Chandan"] 

这是作为用于自动完成值的来源。 我的HTML代码中我input tag onfocus可以调出function hello().

<div id="lets"><input dojoType="dijit.form.ValidationTextBox" id="assignedbyid" name="assignedbyname" required="true" onfocus="hello();" onblur="hi();"></div> 

现在我想有一个验证检查,其检查由用户输入的值来自自动完成值仅("Kapil","Mayur","Abhinav","Chandan")而不是任何其他价值。我有这个代码,如果没有输入任何值,文本框会晃动(onblur="hi();")。在其他部分我想要做的检查。

<script type="text/javascript"> 
function periodical() { 
      $('#lets').effect('shake', { times: 5 }, 200); 
     }; 
      $(document).ready(function() { 
      $('#lets').hide().css('display','').fadeIn(600); 
       }); 
     function hi(){ 
      var dude = dojo.byId("assignedbyid").value; 

      if(dude==""){ 
       periodical();} 
      else{ 

      if(dude) 
       myVar1 

       alert("value entered");} 
       }; 
</script> 

我的其他部分暂时不完整。如何才能做到这一点 ?。谢谢 。如果你只是用普通的JavaScript

if($.inArray(enteredValue, myArray) == false) { ... } // If enteredValue is not in myArray 

,它也很简单:

var V = $("#myInput").val(); 
if (V=="Kapil"||V=="Mayur"||V=="Abhinav"||V=="Chandan") { 
    //do something 
} 

var V = $("#myInput").val(); 
var myArray = ["Kapil","Mayur","Abhinav","Chandan"]; 

if ($.inArray(V, myArray)!=-1) { 
    //do something 
} 
+0

感谢您的回答adeneo ... – 2012-04-16 13:29:00

+0

对阵列手动一样,在每个值检查V是草率的,因为自动完成列表可能是非常大的,或变化等如果他决定明天自动完成列表应该改变,他不应该更新这个代码。 – BenjaminRH 2012-04-16 13:32:20

如果你使用jQuery,您可以使用$.inArray()方法:

if(myArray.indexOf(enteredValue) == -1) { ... } // If enteredValue is not in myArray 

使用此示例代码为您的自动完成。

示例代码..

var url1 = sitepath+'opportunity/contact_autocomplete/'; 
     var related= ''; 
     $(function() { 
      $("#txtcontactid").autocomplete(
      { 
       source:url1, 
       select: function(event, ui) 
       { 
        log( 
         ui.item.id 
        ); 
       } 
      }); 
     });