2012-09-10 15 views
0

我有更多的复选框,输入调用函数“boxclick”当这个用户点击:jQuery的检查,并取消所有动作

<input id="1box" type="checkbox" name="selected[]" onclick="boxclick(this,'1')"> 
<input id="2box" type="checkbox" name="selected[]" onclick="boxclick(this,'2')"> 
<input id="3box" type="checkbox" name="selected[]" onclick="boxclick(this,'3')"> 
<input id="4box" type="checkbox" name="selected[]" onclick="boxclick(this,'4')"> 

对于选择/取消所有我用简单的jQuery脚本:

<input type="checkbox" onclick="$('input[name*=\'selected\']').attr('checked', this.checked);" checked="checked"> 

我的问题是当我检查/取消选中所有功能“boxclick”不运行。

// == a checkbox has been clicked == 
    function boxclick(box,category) { 
    if (box.checked) { 
     show(category); 
    } else { 
     hide(category); 
    } 
    } 
+0

你能告诉我breif ...?我想你要检查所有的一个复选框被选中......?对。? – Gautam3164

+0

你能告诉我们'boxclick'的功能是什么样子吗? –

+0

我已更新我的问题与boxclick代码 –

回答

2

将复选框的属性设置为勾选不会自动为您假冒点击事件!由于您在某些“onclick”处理程序中放置了这些boxclick函数调用,因此您必须触发一个虚假的单击事件才能让您的javascript认为它在所有框中都点击了点击了。为了触发虚假点击的事件使用$(“#不管”)的触发器(“点击”),例如:

$('input[name*=\'selected\']').trigger('click'); 

如果你想查看/取消所有功能,你必须说“OK,主复选框,请如果发生这种情况,请将我的奴隶盒(您的其他盒子在页面上)的检查属性设置为匹配主人的当前选中的属性。就像这样:

function checkAllorUncheckAll(event){ 

    var chiefCheckbx = event.currentTarget; 
    var myBoxes = $('input[name*=\'selected\']'); 

    myBoxes.prop("checked", $(chiefCheckbx).prop("checked")).trigger('click'); 

} 

$('#masterCheckBox').on('change',checkAllorUncheckAll); 
+0

Thk为答案,默认我的复选框都检查,如何解决? –

+0

你想取消选择/检查所有与我看到的一个主复选框,所以请看看我的重做答案:) – sajawikio

2

我认为你可以这样做:

HTML

<input id="1box" type="checkbox" name="selected[]"> 
<input id="2box" type="checkbox" name="selected[]"> 
<input id="3box" type="checkbox" name="selected[]"> 
<input id="4box" type="checkbox" name="selected[]"> 

jQuery的

如果你想检查/取消所有checkbox

var checkboxes = $('input[type=checkbox][name^=selected]'); 
checkboxes.on('click', function() { 
    checkboxes.prop('checked', this.checked); 
}); 

如果你想选择在任何一个时间:

var checkboxes = $('input[type=checkbox][name^=selected]'); 
checkboxes.on('click', function() { 
    checkboxes.prop('checked', false); 
    this.checked = !this.checked; 
});​ 

DEMO

+0

这将检查所有复选框,只要你点击任何一个单一的,并永远不会允许你取消选中它们,既不其中似乎是他们瞄准的功能。 –

0

我猜

$('input[name*=\'selected\']').attr('checked', this.checked).trigger('click');

应该在这里做的伎俩

+0

如果OP的boxclick函数已经单独检查每个框,那么attr('checked',this.checked)链应该不存在。 OP没有发布boxclick函数代码,所以我们目前还不能确定,尽管如果OP想要的话,如果OP的boxClick函数不检查/取消选中,那么执行.attr('checked',this.checked)已经切换个别的盒子(但如果它是一个切换,OP将需要注意 - boxClick代码可能与OP真的想要做什么冲突! – sajawikio

+0

@sajawikio他说,函数boxClick没有被调用设置attr检查。它不会是因为它从来没有实际点击。所以我告诉他触发点击事件后设置attr检查或取消选中。 –

0

演示 http://jsfiddle.net/H37cb/

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js" /></script> 

<script type="text/javascript"> 
$(document).ready(function(){ 

$('input[name="all"],input[name="title"]').bind('click', function(){ 
var status = $(this).is(':checked'); 
$('input[type="checkbox"]', $(this).parent('li')).attr('checked', status); 
}); 

}); 
</script> 




<div id="wrapper"> 
<li style="margin-top: 20px"> 
    <input type="checkbox" name="all" id="all" /> <label for='all'>All</label> 
    <ul> 
    <li><input type="checkbox" name="title" id="title_1" /> <label for="title_1"><strong>Title 01</strong></label> 
    <ul> 
    <li><input type="checkbox" name="selected[]" id="box_1" value="1" /> <label for="box_1">Sub Title 01</label></li> 
    <li><input type="checkbox" name="selected[]" id="box_2" value="2" /> <label for="box_2">Sub Title 02</label></li> 
    <li><input type="checkbox" name="selected[]" id="box_3" value="3" /> <label for="box_3">Sub Title 03</label></li> 
    <li><input type="checkbox" name="selected[]" id="box_4" value="4" /> <label for="box_4">Sub Title 04</label></li> 
    </ul> 
    </li> 
    </ul> 
    <ul> 
    <li><input type="checkbox" name="title" id="title_2" /> <label for="title_2"><strong>Title 02</strong></label> 
    <ul> 
    <li><input type="checkbox" name="selected[]" id="box_5" value="5" /> <label for="box_5">Sub Title 05</label></li> 
    <li><input type="checkbox" name="selected[]" id="box_6" value="6" /> <label for="box_6">Sub Title 06</label></li> 
    <li><input type="checkbox" name="selected[]" id="box_7" value="7" /> <label for="box_7">Sub Title 07</label></li> 
    </ul> 
    </li> 
    </ul> 
</li> 
</div> 
+0

这个答案可能会更有利于OP和其他谁看到它后来,如果你解释_how_它解决了这个问题,即使代码是准确的,我们通常也希望详细解释代码块。 – Herbert

相关问题