手动输入时,Datepicker更改事件会多次触发

时间:2012-03-29 13:54:03

标签: jquery jquery-ui datepicker

我有一个datepicker,它有onSelect属性,可以在datepicker输入字段上执行“更改”功能。 “更改”事件运行一个函数来填充选择列表。只要我选择了datepicker,这就行,但如果我在输入字段中手动输入日期,则change事件将执行两次,而选择列表将具有重复值。

    $("#txtStartDate").datepicker({
    defaultDate: +1,
    dateFormat: "mm/dd/yy", //yy format represents a (4) digit year
    minDate: new Date($("#ctl00_ContentPlaceHolder2_hidfldJunDate").val()),
    maxDate: new Date($("#ctl00_ContentPlaceHolder2_hidfldMayDate").val()),
    showOtherMonths: true,
    changeMonth: true,
    changeYear: true,
    beforeShowDay: $.datepicker.noWeekends,
    firstDay: 1,
    showButtonPanel: true,
    showOn: "button",
    onSelect: function () { $(this).change(); },
    buttonImage: "../Scripts/JQuery/ui/calendar.gif",
    buttonImageOnly: true
}).mask("99/99/9999");

$("#txtStartDate").change(function () {
    if (($("#txtStartDate").val() != "") && ($("#txtStartDate").val() != "__/__/____")) {
        var DoDate = CheckDate($("#txtStartDate").val());
        if (DoDate != "Good") {
            alert("Please enter a valid Start Date");
            $("#txtStartDate").val("");
            $("#txtStartDate").focus();
        }
        else {
            SemesterList($("#txtStartDate").val(), 0);
        }
    }
});

那么我需要做些什么才能防止此更改事件的多次触发,因此我不会在选择列表中获得重复项。我甚至尝试过selectlist.remove认为这将删除列表中的所有元素,但它仍然会成倍增加。

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

使用此语法通过Datepicker删除原始绑定:

$("#txtStartDate").unbind('change').change(function () {
          // your code 
});