2012-03-29 75 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

相關問題