JQuery datetimepicker更改min/maxDate会导致无限循环

JQuery datetimepicker更改min/maxDate会导致无限循环,jquery,datetime,onchange,datetimepicker,on-the-fly,Jquery,Datetime,Onchange,Datetimepicker,On The Fly,我正在使用来自的datetimepicker 问题是我有一个开始和结束输入字段。我不希望用户可以选择晚于开始日期字段的结束日期时间 输入字段如下所示: <input type="text" name="dateStart" id="dateStart" value="<?php echo $pageInfo['page_date_start'];?>" onChange="dateStartChange();" /> <input type="text" name=

我正在使用来自的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
以及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()); 
}
除了一件事之外,这很有效。如果我更改日期,然后单击另一个输入字段并选择同一天,如果我检查控制台日志,将导致无限循环:

页面(chrome)更改为:


这是日期时间选择器的问题还是我做错了什么?我不明白。

可能是递归

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;
}

现在你这么说,问题就清楚了:D 1,那么,你认为我如何用这个来防止递归呢?我以前用布尔标志解决过类似的问题。类似于bCodeChange的东西。当您准备修改另一个控件时,将其设置为true,完成后,将其设置为false。然后在控件中,如果bCodeChange为true,则退出,不做任何操作。然而,我发现这种笨拙。听起来确实很难看,但我认为这行不通。因为如果我只在一个日期上单击1次,控制台将返回函数console log()的3倍。没关系,没有看到您的编辑。我非常感谢你的帮助:P
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;
}