2012-03-29 72 views
0

我有一个日期选择器,它具有将在日期选择器输入字段上执行“更改”功能的onSelect属性。 “更改”事件运行一个函数来填充选择列表。只要我选择日期选择器,这项工作就会生效,但如果我在输入字段中手动输入日期,则更改事件将执行两次,而选择列表将具有重复值。日期选择器更改事件在手动输入时触发多次

$("#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,认为这会删除列表中的所有元素,但它仍然会倍增。

任何帮助表示赞赏。

+0

删除$(本)从ONSELECT方法.change(),但该方法是(即使现在它是空的),这 黑客在我的测试中工作 – minhajul 2015-10-12 14:20:54

回答

2

使用此语法通过日期选择器去掉原有的绑定:

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

我将.unbind('change')添加到上面的代码中,但它仍然通过Semesterlist函数(2)遍历选择控件给我一个重复的选择行。 – 2012-03-30 20:07:47

+1

删除该零件: onSelect:function(){$(this).change(); }, – Shehabix 2012-03-30 20:49:01

相关问题