我想创建自己的插件(不使用任何外部库 - 用于学习目的)来验证用户在正则表达式测试函数中动态输入的文本。
在示例中,我有正则表达式模式:
^。{2} $
和javascript功能
$('#textbox').bind("keypress", function (event) {
var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
if (!regex.test(key)) {
event.preventDefault();
return false;
}
});
现在,我想在文本框中键入两个点,但是在第一次按键被触发后,一个点与模式不匹配,因为事件被阻止,没有任何事情发生。
我的问题:是否可以检查当前键入的文本是否与正则表达式匹配?
答案 0 :(得分:2)
你的正则表达式只接受两个点(..),但你正在测试一个字符!
var regex = new RegExp("^.{2}$");
$('#textbox').bind("keypress", function (event) {
var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
if (!regex.test(key)) {
event.preventDefault();
return false;
}
});
当用户完成输入时,想要检查当前键入的文本吗? ..看HERE
答案 1 :(得分:0)
您可以尝试keydown,因为只要您按一个键并且在文本框中显示字符之前它就会触发。因此,如果它与模式不匹配,您可以退回。
答案 2 :(得分:0)
$('#textbox').bind("keyup", function (event) {
var user_input = getElementById ("your_input_id_here");
if (!regex.test(user_input)) {
return false;
}
});
所以,基本上你应该使用onkeyup而你应该检查整个用户输入,而不仅仅是最后一个键
答案 3 :(得分:0)
var alpha = /[ A-Za-z]/;
var numeric = /[0-9]/;
var alphanumeric = /[ A-Za-z0-9]/;
function validateKeypress(validChars) {
var keyChar = String.fromCharCode(event.which || event.keyCode);
return validChars.test(keyChar) ? keyChar : false;
}
HTML必须更改为onkeypress =“ validateKeypress(alpha);”
答案 4 :(得分:0)
var in_put = document.getElementById("in_put"),
key = null;
in_put.addEventListener("keydown", match_input);
function match_input(e){
console.log("Key: "+e.key);
key = e.key;
console.log("Match: "+key.match(/a/i));//return array of match
if(key.match(/a/i)){
//code on succession.
}else{
//code on failure.
}
}
注意:用/ pattern / ig更改/ a / i。它只检查输入是 a / A。