8

以下の関数で日付を検証しています。検証が失敗した場合、フォームは送信されません。フォーム 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>
4

7 に答える 7

18

ただのコメント:

リスナーがフォームへの参照を渡す場合、名前または 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;
}
于 2013-07-15T04:10:11.203 に答える
0

私の場合、入力フィールドでパターンを使用し、 maxlengthも指定しました。

私と一緒に働いたのは、入力フィールドから長さ属性を削除することでした

于 2018-03-09T10:45:38.997 に答える
-1
     -    I hope this will help you : Just write this code on your Html/jsp page 
    <html>
            <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            </head>

         - **Don't forget to add this on your html page**

            <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

            <script type='text/javascript'>
                $(document).ready(function() {
                    //option A
                    $("regF").submit(function(e) { //regF is form id
                        alert('submit intercepted');
                        e.preventDefault(e);
                    });
                });
            </script>
</html>
于 2018-12-04T10:39:26.877 に答える