2013-07-17 57 views
4

爲什麼引導模式內的複選框不工作?輸入類型複選框不工作內部引導模態

我用這個代碼,使其工作,但仍然有一個問題

documentBody.on('click','.checkInp',null,function(e) { 
    var checkbox = $(this).find(":checkbox"), 
    checked = checkbox.is(":checked"); 
    checkbox.prop("checked", !checked); 

}); 

documentBody.on('click','.checkInp :checkbox',null,function(e) { 
    $(this).parent('span').trigger('click'); 

}); 

,當我點擊它存在時,其未選中或者沒有取消時,其檢查不檢查是否出現?但如果我點擊複選框被標記爲檢查跨度區域或取消

這裏是我的fiddle

回答

6

猜你努力克服引導模態e.preventDefault()的單擊事件 - 這就是爲什麼它永遠不會奏效。另外這兩個事件似乎彼此相互抵消?

試試這個:

$('.checkInp input:checkbox').on('click', function(e) { 

    // prevents the event from bubbling up the DOM tree 
    // eg the modal from cancelling the event 
    e.stopImmediatePropagation(); 

    var checked = (e.currentTarget.checked) ? false : true; 
    e.currentTarget.checked=(checked) ? false : checked.toString(); 
}); 

叉小提琴:http://jsfiddle.net/AurPX/

5

davidkonrad的解決方案是非常好的。雖然,它不尊重標籤標籤。這裏有一個修改後的版本:

jQuery(".modal input:checkbox,.modal label").on("click", function(e) 
{ 
    e.stopImmediatePropagation(); 
    var element = (e.currentTarget.htmlFor !== undefined) ? e.currentTarget.htmlFor : e.currentTarget; 
    var checked = (element.checked) ? false : true; 
    element.checked = (checked) ? false : checked.toString(); 
}); 
+0

(難道這不是針對某個標籤,雖然不可怕,也許,但不是精確的?) –

+0

海事組織,它應該這樣。它只能捕獲.modal元素中的標籤。 –

+0

是的,它會的,但可能有其他標籤存在。 –

-3

我也遇到過這樣的麻煩,它讓我付出了一天的時間來解決它的問題。

不幸的是,JQuery並不容易解決,但必須切換到其他方式。

最後angularjs解決了這個問題。

嘗試檢查。

<div class="modal fad" 
.... 
<input type="checkbox" class="css-checkbox" ng-checked="checked"> 
</div> 

JS:設置它真的像

$scope.checked = 'true'; 
+0

與問題完全無關;切換到不同的前端框架當然是一種解決方案,但它並沒有直接解決兩年前OP的問題。 –