2012-03-29 15 views
0

datepickerの入力フィールドに「変更」機能を実行するonSelectプロパティを持つdatepickerがあります。 「変更」イベントは、選択リストを満たすための関数を実行する。これはdatePickerを選択している限り動作しますが、手動で入力フィールドに日付を入力すると、changeイベントが2回実行され、選択リストに値が重複して表示されます。手動入力時に日付ピッカー変更イベントが複数回発生する

$("#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

削除$(この).change()が、(今でもその空が)この方法を保つ、 このハックに私のテストで働いた – minhajul

答えて

2

日付ピッカーによって、元の結合を除去するために使用この構文:にonSelect方法から

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

私は上記のコードに.unbind( 'change')を追加しましたが、それはセレクトリストコントロールの選択肢の複製ラインを与えるSemesterlist関数(2)を実行します。 –

+1

この部分を削除: onSelect:function(){$(this).change(); }、 – Shehabix

関連する問題