2015-01-07 175 views
0

我試圖綁定一個點擊事件後,先前解除綁定它,我無法讓它工作。解除綁定後無法綁定

這裏是我的HTML:

<div class="input-group date"> 
    <input type="text" class="form-control" id="dp1" style="width: 100px; vertical-align: middle" /> 
    <span class="input-group-addon" id="dp1Icon" style="outline-style:none"><img src="<%=context%>/images/calendar-glyph.png"></span> 
</div> 

輸入實際上是一個自舉日期選擇器組件。範圍包含觸發日期選擇器打開的引導標誌符號。我有一個切換禁用這些像這樣的單選按鈕組:

$(".date-wrap input[type='radio']").on("click", function(e){ 

     if ($(e.target).val() == "permanent"){ 
      $("#dp1, #dp1Icon").prop("disabled", true); 
      $("#dp1Icon").unbind("click"); // Disabled attribute only works on form controls, not spans. So we have to unbind the event 
      $("#dp1").removeAttr("readonly", "readonly"); 
     }else{ 
      $("#dp1, #dp1Icon, #e3").prop("disabled", false); 
      $("#dp1Icon").bind("click"); 
      $("#dp1").removeAttr("readonly"); 
     } 
    }); 

所以,如果單選按鈕他們點擊的價值是「永久」,一切都變得禁用;這很好。否則,我試圖將它們重新打開。

我能想到的唯一的事情是,當我嘗試再次將點擊事件綁定到圖形時,我必須定義打開日期選擇器的實際處理程序;像這樣:

$("#dp1Icon").bind("click", $("#dp1").datepicker('show')); 

但是,只要我點擊另一個單選按鈕,打開日期選擇器。我希望它只在點擊它時打開。 我在這裏想念什麼重要的作品?有人有想法嗎?

感謝您的任何提示。

+1

'bind()'需要一個處理函數參數。閱讀文檔 – charlietfl

回答

2

bind("click")不會神奇地重新添加事件。您需要將其添加回事件。

$("#dp1Icon").on("click", function(){ $("#dp1").datepicker('show'); }); 

你可能會更好,只是在該函數內設置一個標誌,而不是刪除事件。

+0

謝謝,非常快速和有幫助。 – fumeng