多种形式通过复选框启用提交
-
10-07-2019 - |
题
首先,家政服务:快速回顾让我觉得这不是一个重复,但会很乐意予以纠正。
我已经得到了有一个页面多种形式的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直接连接到一个触发它关闭该对象。
不隶属于 StackOverflow