javascript - 更新全选/取消全选复选框

标签 javascript jquery html forms checkbox

以下代码在选择所有复选框时工作正常,但它使用按钮的输入类型。我怎样才能将其更改为 anchor (例如链接)而不是输入类型的按钮。一旦选择了所有内容,这需要更新为 UnCheck All。我试过使用 innerHTML 将它放在一个 DIV 中,但是没有成功。如有任何帮助,我将不胜感激。

非常感谢

<script language="JavaScript">
function Check(chk)
{
if(document.myform.Check_All.value=="Check All"){
for (i = 0; i < chk.length; i++)
chk[i].checked = true ;
document.myform.Check_All.value="UnCheck All";
}else{

for (i = 0; i < chk.length; i++)
chk[i].checked = false ;
document.myform.Check_All.value="Check All";
}
}

// End -->
</script>
<form name="myform" action="checkboxes.asp" method="post">


<input type="checkbox" name="check_list" value="1">apple<br>
<input type="checkbox" name="check_list" value="2">banana<br>
<input type="checkbox" name="check_list" value="3">pear<br>

<input type="button" name="Check_All" value="Check All" onClick="Check(document.myform.check_list)"> 



</form>

最佳答案

我首先想到了一个快速的答案,但后来我发现这会很糟糕 因为如果有人手动勾选复选框,那就完全脑残了。

<form name="myform" action="checkboxes.asp" method="post">
<input type="checkbox" name="check_list" value="1">apple<br>
<input type="checkbox" name="check_list" value="2">banana<br>
<input type="checkbox" name="check_list" value="3">pear<br>
</form>

<div id="checker">Check All</div>

<script type ="text/javascript">
//The toggle code for the div itself
$("#checker").bind("click", function() {
    var toggleState = !! jQuery.data(this, "togglestate");

    $(document.myform.check_list).each(function() {
    this.checked = !toggleState;
    });


    $(this).text(toggleState ? "Check All" : "UnCheck All");
    jQuery.data(this, "togglestate", !toggleState);
});

//Keep track of manual ticking of the checkboxes
//- if all checkboxes are ticked manually, change to uncheck all
//- if all checkboxes are unticked manualy, change to check all

$(document.myform).delegate("input[name=check_list]", "change", function() {
    var curState, prevState, fullStateChange = true;

    //Iterate through the checkboxes to see if all are unticked or if all are ticked
    $(document.myform.check_list).each(function() {
    curState = this.checked;

    if (prevState != null && prevState !== curState) {
        fullStateChange = false;
    }

    prevState = curState;
    });

    //Return as some were ticked and some were not
    if (!fullStateChange) {
    return;
    }

    $("#checker").data("togglestate", curState).text(!curState ? "Check All" : "UnCheck All");

});

//React to initial state of the checkbuttons
$(document.myform.check_list).trigger( "change" );
</script>

演示

http://jsfiddle.net/rBaUM/2/

关于javascript - 更新全选/取消全选复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8548194/

相关文章:

javascript - 如何在javascript中获取选择下拉列表的值?

javascript - 如何拆分和添加字符串中的各个值?

javascript - 如何将 JSON 解析为 HighCharts 折线图?

jQuery Waypoints 使用 CSS Transition 刷新

javascript - 为什么这个 if 总是返回 true?

html - CSS 文件未在 IE 10 和 Google Chrome 上加载

android - 如何处理 HTML5 Web 应用程序中的旋转?

javascript - 列出 Google map 屏幕上的标记

javascript - 如何通知可折叠的折叠

html - 设置 <html> 元素的背景颜色(高度未设置为 100%)适用于整个视口(viewport)