如何使用jquery创建输入限制函数

时间:2014-07-23 14:47:11

标签: javascript jquery html html5 function

我想要做的是使用此规则在输入中添加字符和长度限制:

  

至少十个数字,字母和标点符号的组合   (比如!和&)

如果用户没有完成规则,则输入值将再次变为空。

我的问题是我还是初学者,而且我现在的代码不能按我的意愿工作。任何人都可以帮我这个。

当前输出:http://jsfiddle.net/5kcsn/271/

脚本:

$(document).ready(function () {
    $('#example').on('blur', function () {
        $('#example').change(inputVerify);
        inputVerify()
    })
    $('#example').on('keydown', function () {
        $('#example').change(inputVerify);
        inputVerify()
    })
    $('#example').change(inputVerify);

    function inputVerify(value) {
        return /^(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{10,20}$/.test(value) && /[a-z]/.test(value) && /\d/.test(value)

    };

});

3 个答案:

答案 0 :(得分:2)

我不想告诉你"如何更好地做到这一点",但是如何提供实时反馈而不是恢复错误的条目呢?通过这种方式,用户可以a)一旦正确就看到,b)纠正他以前的条目:

$("#example").on('keydown',function(){
    if(!inputVerify($("#example").val())){
        $("#example").css("border","1px solid red");
    } else {
        $("#example").css("border","1px solid black");
    }

});

function inputVerify(value){
return /^(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{10,20}$/.test(value)
        && /[a-z]/.test(value) 
        && /\d/.test(value) 

};

答案 1 :(得分:0)

你应该只在模糊时这样做,它应该是这样的:

$(document).ready(function(){
    $('#example').on('blur', function(){
        if( !inputVerify() ) {
             $(this).val('');   
        }
    });
});    

function inputVerify(value){
    return /^(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{10,20}$/.test(value)
        && /[a-z]/.test(value) 
        && /\d/.test(value) 
};

您看,您的inputVerify函数返回truefalse,您必须自己删除$(this).val('');的输入。

jsFiddle:http://jsfiddle.net/5kcsn/272/

请注意,我没有测试过您的正则表达式,因为我对它们不太熟悉,但您似乎无法工作。

答案 2 :(得分:0)

试试这个,请注意我没有检查你的正则表达式:

$(document).ready(function () {
    $('#example').keydown(inputVerify);

    function inputVerify(event) {
        var value = $(this).val();
        if (!(/^(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{10,20}$/.test(value) 
            && /[a-z]/.test(value) 
            && /\d/.test(value))) {
                $(this).val('');
        }
    };
});

Link to JSFiddle

函数inputVerify捕获keydown处理程序传递的事件,并使用$(this)引用触发事件的元素来获取输入的值。

然后,如果正则表达式测试失败,请清空输入。

相关问题