输入类型复选框在引导模式内不起作用

时间:2013-07-17 09:40:05

标签: javascript twitter-bootstrap

为什么bootstrap模式中的复选框不起作用?

我使用此代码使其工作但仍有问题

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

3 个答案:

答案 0 :(得分: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/

答案 1 :(得分:5)

davidkonrad的解决方案非常好。虽然,它不尊重label-Tags。这是修改后的版本:

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();
});

答案 2 :(得分:-3)

我也遇到了这个问题,有一天我用Jquery解决了这个问题。

不幸的是,JQuery不容易解决,但不得不切换到其他方式。

最后angularjs解决了这个问题。

尝试检查。

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

js:只需设置为

即可
$scope.checked = 'true';