-1

JavaScript + jQueryを使用して、特定の日付が他の日付よりも小さいかどうかを確認したいと思います。

ただし、指定日より1日後の日付をチェックする場合は条件を満たしていません。

これは私のコードです。

$('#payment_date').change(function(){
    payment_date_1      = String($("#payment_date").val());
    s_date_1        = String($("#s_date").text());

    payment_date        = new Date(payment_date_1);
    s_date          = new Date(s_date_1);

    if(payment_date<s_date){
        alert("please enter a correct date");
        $("#payment_date").val("");
    }
});

例: whenではなくs_date == '2013-07-02'payment_date == '2013-07-01'条件が返されます。falsetrue

私のHTML:

<span style="display:none;" id="s_date">2013-07-02</span>
<input type="text" value="" name="payment_data_info[payment_date]" id="payment_date" class="hasDatepicker" readonly="readonly">

ノート; 両方の日付が有効かどうかを確認しました。2 つの日付が有効な日付を返し、条件は他のインスタンスで完全に機能しています。

理由がわかりました。jQuery の日付ピッカーを使用しています。2013-07-10 以下の日付は有効な日付を返し、2013-07-10 より前で 2013-06-30 より大きい日付は無効な日付を返します。理由はありますか?

4

6 に答える 6

0

これを試してみてください。

 $('#payment_date').change(function(){
        var payment_date_1 = $("#payment_date").val(); //add var
        var s_date_1 =  $("#s_date").text();  //add var

        var payment_date        = new Date(payment_date_1);
        var s_date          = new Date(s_date_1);

        if((payment_date.valueOf())<(s_date.valueOf())){
            alert("please enter a correct date");
            $("#payment_date").val("");
        }
    });
于 2013-07-02T08:55:19.007 に答える
0

確かにそれは動作します;)

http://jsfiddle.net/4MQkK/

payment_date_1  = "2013-07-01";
s_date_1        = "2013-07-02";

payment_date    = new Date(payment_date_1);
s_date          = new Date(s_date_1);

if(payment_date < s_date){
    alert(payment_date + "is lower than " + s_date);
}

payment_date_1 と s_date_1 の値を確認してください。少なくとも 1 つが正しく解析できませんでした

于 2013-07-02T08:49:28.650 に答える
0

2 考えられる原因:

1) Date が複数の引数を持つコンストラクターとして呼び出される 場合、値がその論理範囲よりも大きい場合 (たとえば、月の値として 13 が提供されたり、分の値として 70 が提供されたりする場合)、隣接する値が調整されます。たとえば、new Date(2013,13,1) は new Date(2014,1,1) と同等です ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date )

日付形式は「dd/MM/yyyy」ですが、新しい日付 () は形式 yyyy/dd/mm を使用するため、2013-06-30: 30 は月、つまり 30 月は 06/01/2013 --> 06/06/ です。 2015 形式を変更する必要があります。例えば:

var myDate = "2013/01/30"

var split= myDate .split("/");

new Date (split[2],split[1],split[0]);

2) Javascript の Date() の月は、0 ~ 11 の数値です。そのため、2013年 1 月 3 日は2013年 1 月 4日に変更されました

int month = myMonth -1; // for example: mymonth = 'March' => month = 2
can use new Date(2013,month,30);
于 2013-10-28T11:21:56.127 に答える
-1

このようなことができます。

var payment_date_1      = $("#payment_date").val();
var s_date_1            = $("#s_date").text(); or $("#s_date").val();
// IF s_date_1 is a input field then you have to use .val()

タイプキャスト用String。できるよ

var payment_date_1      = $("#payment_date").val().toString();
var s_date_1            = $("#s_date").val().toString();
于 2013-07-02T08:45:28.940 に答える