如果验证失败,则停止提交表单。 [英] stopping form submit if the validation fails.

查看:124
本文介绍了如果验证失败,则停止提交表单。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

 < script> 
函数dateCheck()
{
start = document.getElementById('name3').value;
end = document.getElementById('name4')。value;
比较(开始,结束);
document.getElementById('name4')。focus();



函数比较(sDate,eDate)
{

函数parseDate(输入){
var parts = input.match(/(\d +)/克);

返回新日期(零件[2],零件[0] -1,零件[1]); //月是基于0的
}
var parse_sDate = parseDate(sDate);
var parse_eDate = parseDate(eDate);
parse_sDate.setFullYear(parse_sDate.getFullYear()+ 1);

if(parse_eDate> = parse_sDate)
{
alert(结束日期不应超过开始日期的一年);
返回false;
}
返回true;
}

< / script>
< / head>
< body>
< form onsubmit =return dateCheck()>
< table>
< tr>
< td>< input type =textname =soname3id =name3size =15readonly =readonly>
< td>< input type =textname =soname4id =name4size =15readonly =readonly>
< / tr>
< / table>
< input type =submitvalue =提交>
< / form>


解决方案

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

 < form onsubmit =return dateCheck(this)> 

然后:

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

请注意,您应该声明变量,否则它们将在他们被分配到的地方变成全球性的。此外,您应该检查控件中的值,然后将它们传递给比较函数(并显示一条消息,要求用户输入一个有效值,如果不是的话)。

 函数dateCheck(表单){
var start = form.name3.value;
var end = form.name4.value;
var valid = compare(start,end); $!
$ b if(!valid)form.name4.focus();

返回false;
}


I am validating the dates in below function. If the validation fails, then the form should not get submitted. I tried returning false in form onsubmit but it still gets submitted. However, Validation is working fine and getting the alert that I put in the function. Any help to stop submitting the form if validation fails.

<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>

解决方案

Just a comment:

If your listener passes a reference to the form, you can access the controls by name or ID:

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

then:

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

Note that you should declare variables, otherwise they will become global at the point they are assigned to. Also, you should check the values in the controls before passing them to the compare function (and display a message asking the user to enter a valid value if they aren't).

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;
}

这篇关于如果验证失败,则停止提交表单。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆