提交表单,为什么javascript没有检查输入内容就提交了

亮术网 2020-06-10 本网原创

网页中的表单少不了要检查用户输入内容,检查自然由 javascript 来完成;但某些时候,明明写了检查表单的 javascript 代码并且调用了,但没有检查或者仅检查了几项就提交了,有些项根本没有检查,也就是不符合要求也正常提交了,检查的 javascript代码形同虚设,为什么会出现这种情况?

正常情况下,在 javascript 代码中,如果输入全符合要求,则返回“真”,也就是通过检查,从而提交表单;如果有一项不符合要求,则返回“假”,要求用户重新输入。一般来说,javascript没有检查输入的全部内容,表单就提交了,是 javascript 代码有错误的缘故;当提交表单时,javascript 开始一项一项的检查用户输入内容,如果检查前几项的代码没有问题,则会正常检查,继续往下检查时突然遇到了代码有问题,则 javascript 会立即终止代码执行返回,它并没有返回“假”,所以提交表单了,这也是前几项能正常检查,后面的没有检查就提交了的原因。

 

举例(提交表单,为什么javascript没有检查输入内容就提交了)

html代码:

<form method="get" action="test.htm">
    <ul class="ul">
      <li>昵称:<input type="text" id="inNi" maxlength="30" /></li>
      <li>密码:<input type="password" id="inPwd" maxlength="30" /></li>
      <li>姓名:<input type="text" id="inName" maxlength="30" /></li>
      <li><input type="submit" id="inSub" value=" 提 交 " onclick="return checkInput()" /><span id="msg"></span></li>
    </ul>
  </form>

 

CSS代码:

.ul{margin:10px 0px; position:relative; border:1px solid #787878; width:350px; height:160px; line-height:30px;}
  .ul li{margin:6px 0 0 10px;}

 

javascript 代码:

<script type="text/javascript">
  function checkInput() {
    var ni = document.getElementById("inNi"), pwd = document.getElementById("inPwd"), yName = document.getElementById("inName"),msg = document.getElementById("msg");

  if (ni.value == "") {msg.innerHTML = "昵称不能为空!"; return false; }
    if (pwd.value == "") { msg.innerHTML = "密码不能为空!"; return false; }

  if (yName == "") { msg.innerHTML = "姓名不能为空!"; return false; }
    return true;
  }
</script>

以上 javascript 代码执行到检查“姓名”时有误,即 if (yName == "") 有误,则立即终止执行,最后一项没有检查,表单就被提交。