首先,家政服务:快速回顾让我觉得这不是一个重复,但会很乐意予以纠正。

我已经得到了有一个页面多种形式的ASP.NET MVC应用程序,每种形式都有一些文本字段,一个协议复选框,并提交按钮。我想禁用提交按钮,如果协议复选框没有为每个表单单独检查。我找到了工作,但我得到我想的东西优雅的感觉,我知道有些人在这里好得多在JQuery的比我。

下面是我有工作的代码:

    $(function() {
        $("form").each(function() {
            $("#Agreement", this).click(function() {
                if (this.checked) {
                    $($($(this).parent().get(0)).find("input:submit").get(0)).attr("disabled", "");
                } else {
                    $($($(this).parent().get(0)).find("input:submit").get(0)).attr("disabled", "disabled");
                }
            });
        });
    });

您可以看到,代码运行在网页准备,选择所有“的形式在页面上并附加一个单击处理每个每个表单内的协议复选框。我一直挣扎着,什么看起来特别不雅,距离触发单击事件回父窗体对象,然后向兄弟(的复选框)提交按钮来禁用它的复选框对象获取的方法。如果任何人都可以想出一个更好的解决方案,然后我准备好了接受教育!

有帮助吗?

解决方案

这样的事情可能会更好:

$(function() {
    $("form").each(function() {
        $("#Agreement", this).click(function() {
            $('input:submit', this.form).attr("disabled", this.checked ? "" : "disabled");
        });
    });
});

它看起来像你id="Agreement"每个表单中重新使用 - 你不应该这样做。

您甚至可以做到这一点,如果您更改ID类:

$(function() {
    $("form .Agreement").click(function() {
        $('input:submit', this.form).attr("disabled", this.checked ? "" : "disabled");
    });
});

其他提示

我会由具有功能disableSubmit(OBJID,checkState),然后在每个复选框实际上只是编码的属性的onclick =“disableSubmite( 'submit1',this.checked)接近它;

disableSubmit(objId, checkState)
{
   $(#objId).attr("disabled", checkState ? "" : "disabled");
}

jQuery是凉的,但有时你只需要对JS直接连接到一个触发它关闭该对象。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top