Checkbox를 통해 제출 된 여러 양식
-
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");
}
});
});
});
코드가 Page Ready에서 실행되고 페이지의 모든 '양식을 선택하고 각 양식 내의 각 계약 확인란에 클릭 핸들러를 첨부합니다. 내가 어려움을 겪고있는 것과 특히 부적절한 모습은 클릭 이벤트를 부모 양식 개체로 다시 트리거 한 다음 (Checkbox) 제출 버튼으로 다시 비활성화하는 체크 박스 개체에서 얻는 방법입니다. 누군가가 더 나은 솔루션을 만들 수 있다면 교육을받을 준비가되었습니다!
해결책
이와 같은 것이 더 나을 수 있습니다.
$(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");
});
});
다른 팁
함수 비활성화 서브트 (objid, checkstate)를 사용하여 접근 한 다음 실제로 각 Checkbox에서 코딩하는 경우 onclick = "disablesubmite ( 'admith1', this.checked)를 코딩합니다.
disableSubmit(objId, checkState)
{
$(#objId).attr("disabled", checkState ? "" : "disabled");
}
jQuery는 시원하지만 때로는 JS를 발사하는 물체에 직접 연결하면됩니다.