0

http://trentrichardson.com/examples/timepicker/の datetimepicker を使用しています。

問題は、開始と終了の入力フィールドがあることです。ユーザーが開始日フィールドより後の終了日時を選択できるようにしたくありません。

入力フィールドは次のようになります。

<input type="text" name="dateStart" id="dateStart" value="<?php echo $pageInfo['page_date_start'];?>" onChange="dateStartChange();" />
<input type="text" name="dateEnd" id="dateEnd" value="<?php echo $pageInfo['page_date_end'];?>" onChange="dateEndChange();" />
// Default date value = 0000-00-00 00:00:00

datetimepicker をセットアップする JScript:

$('#dateStart').datetimepicker({
    showSecond: false,
    timeFormat: 'HH:mm:ss',
    dateFormat: "yy-mm-dd",
});

$('#dateEnd').datetimepicker({
    showSecond: false,
    timeFormat: 'HH:mm:ss',
    dateFormat: "yy-mm-dd",
});

そして onchange 関数:

function dateStartChange(){
    console.log("dateStartChange: " + $("#dateStart").val());
    $("#dateEnd").datepicker('option', 'minDate', $("#dateStart").val()); 
}

function dateEndChange(){
    console.log("dateEndChange: " + $("#dateEnd").val());
    $("#dateStart").datepicker('option', 'maxDate', $("#dateEnd").val()); 
}

これは、1つのことを除いてうまく機能します。日付を変更し、別の入力フィールドをクリックして同じ日を選択すると、コンソール ログを確認すると無限ループが発生します。 コンソール出力...

そしてページ(クロム)はこれに変わります: ページの結果

日時ピッカーに問題がありますか、それとも何か間違っていますか? 理解できません。

4

1 に答える 1

1

それはおそらく再帰です....

When dateStart changes, you are modifying dateEnd.
When dateEnd changes, you are modifying dateStart.
When dateStart changes, you are modifying dateEnd.
When dateEnd changes, you are modifying dateStart.
When dateStart changes, you are modifying dateEnd.
When dateEnd changes, you are modifying dateStart.
When dateStart changes, you are modifying dateEnd.
When dateEnd changes, you are modifying dateStart.

などなど

[提案された回避策を編集し、両方のイベント ハンドラに適用]

var bCodeChange = false;

function dateStartChange()
{
    if (bCodeChange == true)
        return;
    else
        bCodeChange = true;

    console.log("dateStartChange: " + $("#dateStart").val());
    $("#dateEnd").datepicker('option', 'minDate', $("#dateStart").val());

    bCodeChange = false;
}
于 2013-04-21T14:54:52.340 に答える