javascript - 如果验证失败则停止表单提交。

标签 javascript html

我正在验证以下函数中的日期。如果验证失败,则不应提交表单。我尝试在表单 onsubmit 中返回 false,但它仍然被提交。但是,验证工作正常并收到我放入函数中的警报。如果验证失败,任何停止提交表单的帮助。

<script>
  function dateCheck()
  {
      start = document.getElementById('name3').value;
      end = document.getElementById('name4').value;
      compare(start, end);
      document.getElementById('name4').focus();

  }

  function compare(sDate, eDate)
  {

      function parseDate(input) {
            var parts = input.match(/(\d+)/g);

            return new Date(parts[2], parts[0]-1, parts[1]); // months are 0-based
          }
       var parse_sDate = parseDate(sDate);
      var parse_eDate = parseDate(eDate);
       parse_sDate.setFullYear(parse_sDate.getFullYear() + 1);

      if(parse_eDate >= parse_sDate)
          {
          alert("End date should not be greater than one year from start date");
           return false;
          }
       return true;
  }

</script>
</head>
<body>
<form onsubmit="return dateCheck()">
<table>
<tr>
<td><input type="text" name="soname3" id="name3" size="15" readonly="readonly"> 
<img src="../Image/cal.gif" id="" style="cursor: pointer;" onclick="javascript:NewCssCal('name3','MMddyyyy','dropdown',false,'12')" /></td>
 <td><input type="text" name="soname4" id="name4" size="15" readonly="readonly">
 <img src="../Image/cal.gif" id="" style="cursor: pointer;" onclick="javascript:NewCssCal('name4','MMddyyyy','dropdown',false,'12'); " /> </td>
 </tr>
</table>
<input type="submit" value="Submit">
</form>

最佳答案

只是评论:

如果您的监听器传递对表单的引用,您可以通过名称或 ID 访问控件:

<form onsubmit="return dateCheck(this)">

然后:

function dateCheck(form) {
  var start = form.name3.value;
  ...
}

请注意,您应该声明变量,否则它们将在分配给它们的位置变成全局变量。此外,您应该在将控件中的值传递给比较函数之前检查它们(如果不是,则显示一条消息,要求用户输入有效值)。

function dateCheck(form) {
  var start = form.name3.value;
  var end = form.name4.value;
  var valid = compare(start, end);

  if (!valid) form.name4.focus();

  return false;
}

关于javascript - 如果验证失败则停止表单提交。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17646471/

相关文章:

css - 对背景图像的悬停效果

html - 绝对定位的 DIV 填满整个页面

html - 如何在多个div元素之间添加垂直线

html - Safari 获取内联 block float 元素的 % 宽度错误

javascript - AWS IoT websocket 连接返回 403

c# - 通过 PageMethod 触发服务器端方法

html - Zurb Foundation 4 默认正文字体大小更改导致布局宽度问题

javascript - 错误: The input is not a valid Base-64 string

javascript - 选择器非和 sibling

javascript - 未捕获的语法错误 : Invalid flags supplied to RegExp constructor 'Capture'