检查文本框中的值是否仅从自动完成值中输入。
问题描述:
我正在开发一个Web应用程序。为了输入值我使用自动完成从数据库中获取其数据。检查文本框中的值是否仅从自动完成值中输入。
$(document).ready(function hello(){
var myVar1 = <%=request.getAttribute("variable1")%>
$("input#assignedbyid").autocomplete({
source: myVar1
});
});
上面给定的例子给我一个组被从使用JDBC
和json
代码数据库拾取值。在任何时间点在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
}
答
如果你使用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
);
}
});
});
感谢您的回答adeneo ... – 2012-04-16 13:29:00
对阵列手动一样,在每个值检查V是草率的,因为自动完成列表可能是非常大的,或变化等如果他决定明天自动完成列表应该改变,他不应该更新这个代码。 – BenjaminRH 2012-04-16 13:32:20