检查表格中是否选中任何复选框(MooTools)

时间:2015-02-09 07:45:55

标签: javascript html forms checkbox

我使用带有各种复选框组的表单,我希望只有选中任何复选框时才会显示页面底部的下一个按钮。

我在这里找到了一个使用jQuery的工作解决方案:

var checkboxes = $("input[type='checkbox']"),
submitButt = $("input[type='submit']");

checkboxes.click(function() {
submitButt.attr("disabled", !checkboxes.is(":checked"));
});

http://jsfiddle.net/BPhZe/1937/

我正在寻找一种方法来使用MooTools,我更喜欢一种解决方案,其中按钮状态不是"禁用"但是通过CSS隐藏。

1 个答案:

答案 0 :(得分:1)

MooTools具有Element.checked属性,以查看指定的元素是否设置为"已检查"或不。 MooTools还允许您添加":已检查"到您的选择器,只获取匹配的选定元素。这意味着您可以执行以下操作来确定是否选中了任何复选框:

if ($$("input[type=checkbox]:checked").length > 0)

或者这可以确定当前是否选中了 no 复选框:

if ($$("input[type=checkbox]:checked").length < 1)

鉴于您链接的示例表单,这是一种方法:

$$("input[type=checkbox]").each(function(checkboxInput) {
    checkboxInput.addEvent("click", function() {
        // show submit button if at least 1 checkbox is checked
        if (checkboxInput.checked) {
            $$("input[type=submit]").each(function(submitButton) {
                submitButton.removeProperty("disabled");
            });
        }
        // hide submit button if no checkboxes are checked
        if ($$("input[type=checkbox]:checked").length < 1) {
            $$("input[type=submit]").each(function(submitButton) {
                submitButton.set("disabled", "disabled");
            });
        }
    });
});

如果你的提交按钮有一个id属性 - 比如,id =&#34; formSubmitButton&#34; - 你可以用那种方式引用它并使用稍微少的代码完成同样的事情,而不必使用$$(&#34;输入[type = submit]&#34;)。each(function(submitButton){.. 。}:

$("formSubmitButton").removeProperty("disabled");

要从禁用/重新启用按钮更改为显示/隐藏按钮,您可以使用属性样式=&#34; display:none;&#34;设置按钮来启动表单,然后调用submitButton .removeProperty(&#34; style&#34;)选中复选框时,以及submitButton.setStyle(&#34;显示&#34;,&#34;无&#34;),当不再检查时。该版本的完整代码示例,使用带有ID的提交按钮:

$$("input[type=checkbox]").each(function(checkboxInput) {
    checkboxInput.addEvent("click", function() {
        // show submit button if at least 1 checkbox is checked
        if (checkboxInput.checked) {
            $("formSubmitButton").removeProperty("style");
        }
        // hide submit button if no checkboxes are checked
        if ($$("input[type=checkbox]:checked").length < 1) {
            $("formSubmitButton").setStyle("display", "none");
        }
    });
});