我想要做的是使用此规则在输入中添加字符和长度限制:
至少十个数字,字母和标点符号的组合 (比如!和&)
如果用户没有完成规则,则输入值将再次变为空。
我的问题是我还是初学者,而且我现在的代码不能按我的意愿工作。任何人都可以帮我这个。
当前输出: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)
};
});
答案 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函数返回true
或false
,您必须自己删除$(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('');
}
};
});
函数inputVerify捕获keydown处理程序传递的事件,并使用$(this)
引用触发事件的元素来获取输入的值。
然后,如果正则表达式测试失败,请清空输入。