1

日付を選択するために日付ピッカーを使用しています。選択した日付の差を計算し、差を警告したいのですが、コードが機能していません。

HTML 日付ピッカー

<input type="date" size="8" name="advDurFrom" />
<input type="date" size="8" name="advDurTo"/>

Javascript

   $('input[name=advDurFrom]').click(function() {
    var x=$('input[name=advDurFrom]').val();
    var date1 = new Date(x);
    });
        $('input[name=advDurTo]').click(function() {
        var y=$('input[name=advDurTo]').val();
    var date2 = new Date(y);
    });
    $('input[name=advDurTo]').focusout(function() {
    var diffDays = date2.getTime() - date1.getTime(); 
    alert(diffDays);
    });
4

5 に答える 5

0

getTime はミリ秒を返します。正しい単位に変換するだけです。ここでは、日差のある例を示します。また、クリックではなくぼかしイベントを使用するか、ユーザーが実際に入力する前に値を割り当てることになります

var isOK = false;
var isOK2 = false;
$('input[name=advDurFrom]').blur(function () {
    var x = $('input[name=advDurFrom]').val();
    try {
        date1 = new Date(x);
        isOK = !isNaN(date1);
    } catch (e) {
        isOK = false;
    }
    printDiff();
});
$('input[name=advDurTo]').blur(function () {
    var y = $('input[name=advDurTo]').val();
    try {
        date2 = new Date(y);
        isOK2 = !isNaN(date2);
    } catch (e) {
        isOK2 = false;
    }
    printDiff();
});

function printDiff(){
    if (isOK && isOK2) {
        var one_day = 1000 * 60 * 60 * 24;
        var diff = Math.ceil((date2.getTime() - date1.getTime()) / (one_day));
        console.log(diff + ' days');
    }
}

ここでフィドル

于 2013-05-30T07:29:09.273 に答える
0

変数をグローバルに宣言する必要があると思います。このコードを試してください。これは私にとって完璧に機能しています。

var date1 = "";
var date2 = "";

$('#advDurFrom').click(function () {
    var x = $(this).val();
    date1 = new Date(x);
});
$('#advDurTo').click(function () {
    var y = $(this).val();
    date2 = new Date(y);
});
$('#advDurTo').focusout(function () {
    var diffDays = date2.getTime() - date1.getTime();
    alert(diffDays);
});

HTMLを次のように変更します

 <input type="date" size="8" id="advDurFrom" />
 <input type="date" size="8" id="advDurTo" />
于 2013-05-30T07:12:18.520 に答える
0
$('input[name=advDurFrom]').live('change', function(e) {
    var x=$(this).datepicker( "getDate" );
    date1 = x.getTime();
});
$('input[name=advDurTo]').live('change', function(e) {
    var y=$(this).datepicker( "getDate" );
    date2 = y.getTime();
});
$('input[name=advDurTo]').live('blur', function(e) {
    if(date2 && date1){
        var diffDays = date2 - date1 ; 
        alert(diffDays);
    } else {
        alert("date is not selected.")
    } 
});
于 2013-05-30T06:35:10.017 に答える