Javascript 使用Jquery限制输入文本框
所以我需要有一个输入框,人们只能输入“是”或“否”。不允许其他输入。有人知道Jquery的插件或其他简单方法吗?我发现了一个名为constraint()的插件,它可以阻止用户键入某些字符,但这还不够,例如,该插件只能阻止用户在字母字段中键入数字。下拉框或其他组件不是选项Javascript 使用Jquery限制输入文本框,javascript,jquery,html,jquery-plugins,Javascript,Jquery,Html,Jquery Plugins,所以我需要有一个输入框,人们只能输入“是”或“否”。不允许其他输入。有人知道Jquery的插件或其他简单方法吗?我发现了一个名为constraint()的插件,它可以阻止用户键入某些字符,但这还不够,例如,该插件只能阻止用户在字母字段中键入数字。下拉框或其他组件不是选项 感谢您的帮助。根据评论中的说明,尝试以下方法: 试试看: 编辑:添加了一个keypress事件来处理用户按下键的情况 $('input').blur(function() { var val = this.value.t
感谢您的帮助。根据评论中的说明,尝试以下方法: 试试看: 编辑:添加了一个
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);
}
});
原件: 如果出于某种原因您没有使用
或:radio
或其他东西,那么您可以让jQuery检查.blur()
事件上的值
试试看:
如果(不区分大小写)值不是“是”或“否”,则只清除输入。我还添加了一个
alert()
,以向用户提供一点关于清除字段原因的反馈。您可能需要一种不同的反馈方法。为什么不这样做()?这只允许您键入包含在允许值数组中的字符?我怀疑有更好的方法来检查数组中是否存在值或部分值,而不是循环。但这将由用户的按键触发,而不是当控件失去焦点时…因此UX可能会更好
希望这有帮助
HTML
输入文本:
JavaScript代码
var allowedValues=['yes','no'];
$(文档).ready(函数(){
$(“#数据”).keyup(函数(e){
var typedValue=$(this).val(),
valLength=typedValue.length;
对于(i=0;我如何看待复选框?这是一个yes
/no
元素…:)老实说,它会更加用户友好(如果你没有做一个关于用户友好性的测试…)。你真的必须有一个很好的理由不使用它。引用“下拉框或其他组件不是一个选项。”如果您想向用户提供二进制选择,那么使用非文本input.plugin来验证yes和no值会带来更好的用户体验?您可以编写一个简单的函数来实现这一点。@Felix Kling和其他人:我不能使用下拉列表、单选按钮、复选框和其他选项的原因是因为这是一个管理决策。相信我我,如果这是我的决定,我会使用其他东西。不幸的是,他们支付我的薪水并发号施令。对此我真的无能为力。我实际上在寻找更复杂的东西。理想情况下,我希望动态地主动阻止输入。这是,如果用户按下字母X,那么就不应该这样做偶数显示,作为唯一有效输入,以Y或N@webyacusa-刚刚更新了我的答案。我把.blur()
事件留在那里,因为如果用户使用GUI将文本粘贴到输入中,keyup()
不会有帮助。@webyacusa-你看到我的更新了吗?你接受的答案基本上与keyup()相同
是我的一部分,但不处理其他情况(效率较低)。也有一些代码不起作用,例如:$(“#数据”).empty()
,它什么都不起作用。
$('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.");
}
});
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));
});
});