http://jsbin.com/cunejafehe/edit?html,js,console,output
var reg = /^[a-zA-Z\d\s\-'#(),"]*$/;
function myFunction(e){
console.log(e.value);
if(reg.test(e.value))
{
return false;
}
}
<input onkeyup="myFunction(this)" type="text">
我想知道为什么上面的代码不起作用,我想要做的是只允许这些字符在输入中:a-z
和1-9
包括0
,以及这些字符-'#(),"
答案 0 :(得分:2)
请看一下这种方法。在这里,我传递一个event
对象而不是DOM元素引用,然后我们将根据Regx表达式进行检查。
var reg = /^[a-zA-Z\d\s\-'#(),"0-9]*$/
function myFunction(e){
var c = String.fromCharCode(e.which)
console.log(c);
if(reg.test(c))
{
return true;
}
else
return false;
}
$(document).ready(function(){
$( "#mytextbox" ).keypress(function( e) {
return myFunction(e);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
Inline function : <input onkeypress="return myFunction(event)" type="text">
<br/>
Binding a function : <input id="mytextbox" type="text">
答案 1 :(得分:0)
test
方法属于RegExp对象,因为您没有使用它,您应该在myFunction中将reg.test(c)
更改为c.match(reg)
。
此外,您通过传递this
来处理该字段的全部值。我想你可以做这样的事情,即使不是很优雅:
var reg = /^[a-zA-Z\d\s\-'#(),"]*$/;
function myFunction(e){
if (!e.value.match(reg)) {
e.value = e.value.slice(0, -1);
}
}
<input onkeyup="myFunction(this)" type="text">