<form action="" method="post">
<div align="center"><legend>Add a Code</legend>
<label for="code"></label>
<input type="text" name="code" id="code" maxlength="10" />
<input type='button'
onclick=
"isAlphanumeric(document.getElementById('code'),'Your Submission Contained Invalid Characters');
isBadPhrase(document.getElementById('code'), 'Please Enter A Correct Friend Code!');"
value='Check Field' />
function isAlphanumeric(elem, helperMsg){
var alphaExp = /^[0-9a-zA-Z]+$/;
if(elem.value.match(alphaExp)){
return true;
}else{
alert(helperMsg);
elem.focus();
return false;
}
}
function isBadPhrase(elem,helperMsg){
var badPhrase=/EPW|ESW|\s/;
if (elem.value.match(badPhrase)){
alert(helperMsg);
elem.focus();
return false;
}else{
return true;
}
}
这里有什么问题?
答案 0 :(得分:0)
您没有从处理程序返回任何内容。您需要从处理程序返回一个值(true / false),尤其是在您想要停止默认值时。注意 - 我还将“BadPhrase”方法的名称更改为“GoodPhrase”,以便它与返回值的意义相匹配。
脚本:
function isAlphanumeric(elem, helperMsg){
var alphaExp = /^[0-9a-zA-Z]+$/;
if(elem.value.match(alphaExp)){
return true;
} else {
alert(helperMsg);
elem.focus();
return false;
}
}
function isGoodPhrase(elem,helperMsg){
var badPhrase=/EPW|ESW|\s/;
if (elem.value.match(badPhrase)){
alert(helperMsg);
elem.focus();
return false;
} else {
return true;
}
}
function checkInput(id) {
return isAlphanumeric(document.getElementById(id),'Your Submission Contained Invalid Characters')
&& isGoodPhrase(document.getElementById(id), 'Please Enter A Correct Friend Code!');
}
HTML:
<input type='button' onclick="return checkInput('code');" value='Check Field' />
修改强>:
如果您对表单提交进行验证,则无论表单的提交方式如何,都将运行。您可以在表单标记中将其添加为onsubmit处理程序,就像您对按钮的单击处理程序所做的那样。如果它应该触发表单提交,那么该按钮可能应该是一个提交按钮。
注意:我的偏好是通过javascript而不是在标记中添加处理程序,但这超出了问题的范围。我也可能使用框架而不是原始的javascript,但这也在范围之外。