在键入输入时,我想逐字符验证文本字符,例如文本为:The Quick Brown Fox
我希望逐个字符匹配
喜欢:最初,文本框为空:
我按
T
=>行
h
=>行
a
=>不行(不会写在文中)
e
=>行
等等
我写了这个jquery regex
表达式。但是,它没有起作用,因为它正在比较整个文本。
$("#text").on("keypress", function(e) {
if (!(/^The Quick Brown Fox$/i.test($(this).val()+String.fromCharCode(e.keyCode)))) {
return false;
}
}
答案 0 :(得分:2)
你可以试试
$("#text").on("keypress", function(e) {
var myText = ($(this).val()+String.fromCharCode(e.keyCode));
if ('The Quick Brown Fox'.indexOf(myText) != 0) {
return false;
}
});
答案 1 :(得分:1)
正则表达式不是做这种事情的最佳选择。
您最好先设置一个字符串并循环浏览字符,直到找到不匹配为止。
每次按键时,从头开始检查字符串。这会抓住人们粘贴到input
。
答案 2 :(得分:0)
当您的正则表达式匹配整个字符串时,您正在检查每次按键。检查完整个字符串后再检查一次。
$("#text").on("blur", function(e) {
if (!(/^The Quick Brown Fox$/i.test($(this).val()))) {
return false;
}
}
答案 3 :(得分:0)
可以循环并逐个字符地比较并进行处理。
<强> HTML:强> 输入正确的文字:
JQUERY CODE:
var txt = "The Quick Brown Fox";
var index = 0;
$("#text").on("keyup", function (e) {
var st = $('#text').val();
while (index < st.length) {
if (txt[index] === st[index]) index++;
else {
$(this).val(st.substr(0, index));
break;
}
}
});
现场演示: http://jsfiddle.net/dreamweiver/2dadL/21/
快乐编码:)