所以我需要一个输入框,只允许人们输入“是”或“否”字样。不允许其他输入。有没有人知道插件或任何其他简单的方法与Jquery?我找到了一个名为constraint(http://plugins.jquery.com/project/constrain)的插件,它可以阻止用户输入某些字符,但这还不够,因为插件只能阻止用户在字母字段中键入数字。下拉框或其他组件不是一种选择。
感谢您的帮助。
答案 0 :(得分:2)
为什么不这样(link to jsFiddle)?这只会让你输入允许值数组中包含的那些字符?我怀疑有更好的方法来检查数组中是否存在值或部分值而不是循环。但这将由用户的按键触发,而不是当控件失去焦点时...因此UX可能会更好。
希望这会有所帮助!!
Enter text: <input type="text" id="data" />
var allowedValues = ['yes','no'];
$(document).ready(function() {
$("#data").keyup(function(e) {
var typedValue = $(this).val(),
valLength = typedValue.length;
for(i=0;i<allowedValues.length;i++) {
if(typedValue.toLowerCase()===allowedValues[i].substr(0,valLength)) {
return;
}
}
$("#data").empty().val(typedValue.substr(0, valLength-1));
});
});
答案 1 :(得分:0)
根据评论中的澄清,试试这个:
试一试: http://jsfiddle.net/fsPgJ/2/
编辑:添加了keypress
个事件来处理按住密钥的用户。
$('input').blur(function() {
var val = this.value.toLowerCase();
if(val != "yes" && val != "no") {
this.value = '';
alert( "'Yes' or 'No' is required. \n Please try again.");
}
})
.keypress(function() {
var val = this.value.toLowerCase();
if(val != "yes" && val != "no")
this.value = '';
})
.keyup(function() {
var val = this.value.toLowerCase();
if("yes".indexOf(val) != 0 &&
"no".indexOf(val) != 0) {
this.value = this.value.substr(0,this.value.length - 1);
}
});
<强>原始强>
如果您出于某种原因没有使用<select>
或:radio
或其他内容,那么您可以让jQuery检查.blur()
事件的值。
试一试: http://jsfiddle.net/fsPgJ/
$('input').blur(function() {
var val = this.value.toLowerCase();
if(val != "yes" && val != "no") {
this.value = '';
alert( "'Yes' or 'No' is required. \n Please try again.");
}
});
如果(不区分大小写)值不是“是”或“否”,则只清除输入。我还添加了一个alert()
,以便向用户提供有关字段清除原因的一些反馈。您可能需要不同的反馈方法。