我有一个表单验证脚本。除非满足所有条件,否则与form.onclick
关联的模糊函数将返回false(表单不提交)。我有另一个函数,在出错时会将错误消息附加到errorLog div。
function addError (msg) {
msg = document.createTextNode(msg);
br = document.createElement("br");
errorLog.append(msg);
errorLog.append(br);
alert("yes");
}
如果发现错误,则调用此函数会提交表单。脚本甚至不进入函数,它只是提交数据并刷新。我意识到函数中存在错误,但我似乎无法弄明白。
编辑:更多我的代码
form.onsubmit = function ()
{
if (nameCheck(fname, lname))
return true;
return false;
};
检查“name”字段是否有效的函数:
function nameCheck (fname,lname)
{
if (("/\d/").test(fname) || ("/\d/").test(lname))
{
addError('Your name cannot contain numbers.');
valid = false;
}
}
答案 0 :(得分:2)
您没有停止提交表单。
使用e.preventDefault()
暂时停止提交表单,如果表单正确,请使用this.submit()
完成提交表单
form.onsubmit = function (e) {
e.preventDefault();
if (nameCheck(fname, lname)) {
this.submit();
return true;
}
return false;
};
此外,nameCheck
永远不会解析为真,因为它不会返回任何内容。看起来应该是这样的
function nameCheck (fname,lname) {
if (("/\d/").test(fname) || ("/\d/").test(lname)) {
addError('Your name cannot contain numbers.');
return false;
}
return true;
}
答案 1 :(得分:0)
这样做的简单方法是:
form.onsubmit = function () {
if (("/\d/").test(fname) || ("/\d/").test(lname)) {
addError('Your name cannot contain numbers.');
return true;
} else { return false; }
};
这样,您就不需要checkName()
部分,但仍然需要addError()
部分。