Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Jquery限制输入文本框_Javascript_Jquery_Html_Jquery Plugins - Fatal编程技术网

Javascript 使用Jquery限制输入文本框

Javascript 使用Jquery限制输入文本框,javascript,jquery,html,jquery-plugins,Javascript,Jquery,Html,Jquery Plugins,所以我需要有一个输入框,人们只能输入“是”或“否”。不允许其他输入。有人知道Jquery的插件或其他简单方法吗?我发现了一个名为constraint()的插件,它可以阻止用户键入某些字符,但这还不够,例如,该插件只能阻止用户在字母字段中键入数字。下拉框或其他组件不是选项 感谢您的帮助。根据评论中的说明,尝试以下方法: 试试看: 编辑:添加了一个keypress事件来处理用户按下键的情况 $('input').blur(function() { var val = this.value.t

所以我需要有一个输入框,人们只能输入“是”或“否”。不允许其他输入。有人知道Jquery的插件或其他简单方法吗?我发现了一个名为constraint()的插件,它可以阻止用户键入某些字符,但这还不够,例如,该插件只能阻止用户在字母字段中键入数字。下拉框或其他组件不是选项


感谢您的帮助。

根据评论中的说明,尝试以下方法:

试试看:

编辑:添加了一个
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));
    });
});