我有一个文本框,点击提交按钮后将在JavaScript中验证。
只允许使用字符0-9和a-f和A-F.
所以g-z和G-Z以及其他字符如标点符号或不允许。
我到目前为止的代码是:
function validate_form ( )
{
valid = true;
if ( document.form.input.value == [a-zA-Z_,.:\|] )
{
alert ( "You can only enter either 0-9 or A-F. Please try again." );
valid = false;
}
return valid;
}
这似乎不起作用。
我是JavaScript的新手,所以任何人都可以给我一个关于我哪里出错的提示吗?
答案 0 :(得分:3)
我们实际上可以清理这些代码。没有必要跟踪valid
,因为test()
将为我们提供我们正在寻找的true
或false
值。在您的情况下,保持可接受字符的白名单而不是黑名单也更容易。也就是说,我们知道我们想要的每个字符,但不能指定我们不想要的每个字符。
function validate_form() {
return /^[a-fA-F0-9]+$/.test(document.form.input.value);
}
请注意,您也可以使用它进行预检:
document.form.input.onkeyup = function() {
if (!validate_form()) {
alert("You can only enter either 0-9 or A-F. Please try again.");
}
};
答案 1 :(得分:2)
语法为/^[a-zA-Z_,.:\|]+$/.test(document.form.input.value)
。请注意^
和$
:如果没有它们,即使对于只包含至少一个允许字符的字符串,测试也会通过。
答案 2 :(得分:0)
验证的最佳方法是不让用户输入错误的字符。使用此代码(这是jQuery版本,但您也可以将其轻松转换为JavaScript):
$('#inputFiledId').keyup(function(e){
// checking the e.keyCode here, if it's not acceptable, the return false (which prevents the character from being entered into the input box), otherwise do nothing here.
});
这称为预检。无论你在客户端做什么,都要考虑到你在服务器上也要检查值(有服务器端验证),因为周围有多个hacks,如form-spoofing。
答案 3 :(得分:0)
你可以做这样的事情
$('input').keyup(function(){
var charac = /[g-zG-Z;:,.|_]/;
var result = charac.test($(this).val());
if(result == true){
alert('You can only enter either 0-9 or A-F. Please try again.');
}
})