使用Jquery限制输入文本框

时间:2010-08-27 16:22:10

标签: javascript jquery html jquery-plugins

所以我需要一个输入框,只允许人们输入“是”或“否”字样。不允许其他输入。有没有人知道插件或任何其他简单的方法与Jquery?我找到了一个名为constraint(http://plugins.jquery.com/project/constrain)的插件,它可以阻止用户输入某些字符,但这还不够,因为插件只能阻止用户在字母字段中键入数字。下拉框或其他组件不是一种选择。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

为什么不这样(link to jsFiddle)?这只会让你输入允许值数组中包含的那些字符?我怀疑有更好的方法来检查数组中是否存在值或部分值而不是循环。但这将由用户的按键触发,而不是当控件失去焦点时...因此UX可能会更好。

希望这会有所帮助!!

HTML

Enter text: <input type="text" id="data" />

JavaScript代码

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(),以便向用户提供有关字段清除原因的一些反馈。您可能需要不同的反馈方法。