0

Web アプリケーションで spring-mvc とブートストラップを使用しています。ページの1つに、ユーザーが開始日時と終了日時を入力するための2つのフィールドがあります。これは、bootstrap-datetimepicker.js https://github.com/smalot/bootstrap-datetimepickerから取得しました

これは正常に動作しますが、今はバリデーションを含める必要があります。startdate-time は常に enddate-time より大きく、フォームのバリデーションにも jquery.validate.min.js を使用していますが、2 つのタイムスタンプを比較することはできません。以下のコードを試しました

$.validator.addMethod("budgetgreaterThan", 
          function(value, element, params) {
      alert(value);
      value=value.slice(0,-6);


        if (!/Invalid|NaN/.test(new Date(value))) {
            return new Date(value) >= new Date($(params).val());
        }
        return isNaN(value) && isNaN($(params).val()) 
            || (Number(value) > Number($(params).val())); 
    },'Must be greater than {0}.');

rules:
{
  budgetgreaterThan: '#startdate' 
}

messages:
{
    budgetgreaterThan:"Delivery date and Collect date should be proper"
}

ここでのタイムスタンプ値はこの形式です"YYYY-MM-DD hhhh:mm:ss"

どうすればこれを達成できるか教えてください。

4

1 に答える 1

0

私は ajax 呼び出しを行い、バックエンドで検証することでこの問題を解決しまし$.validator.addMethod()た。onblur="myFunction()"

<input type="text" id="enddate" name="enddate" onblur="myFunction()">

<script>
function myFunction()
{

  var sdate = $('#startdate').val();
  var edate = $('#enddate').val();

  var totaldate = sdate+"/"+edate;

   $.ajax({
     url: '${pageContext.servletContext.contextPath}/developer/createinstance/TimeCheck.prm',
     type: 'get',
     data: "totaldate="+totaldate,
     success: function (data1) {
       if(data1 == -1)
       {     
         bootbox.alert("enddate cannot be lesser than start date");
         $('#startdate').val("");
         $('#enddate').val("");
       }
       if(data1 == 0)
       {
         bootbox.alert("date cannot be same");
         $('#startdate').val("");
         $('#enddate').val("");
       }
     }
   });
}
</script>

しかし、これを実装するためのより良い方法があると確信しています。誰かがより良い解決策を提供できれば、それは素晴らしいことです。

于 2014-08-26T05:27:16.470 に答える