문제

첫째, 하우스 키핑 : 빠른 검토를 통해 이것이 중복되지 않지만 수정되어 기쁘다 고 생각합니다.

여러 양식의 페이지가있는 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를 발사하는 물체에 직접 연결하면됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top