为什么调用这个Javascript函数提交我的表单?

时间:2015-06-13 01:21:48

标签: javascript

我有一个表单验证脚本。除非满足所有条件,否则与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;
  }
}

2 个答案:

答案 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()部分。