문제

확인이 참이면 다른 jQuery 함수를 호출하려고합니다. 여기에 코드가 있습니다.

jQuery("#adminForm_1").submit(function () {

    var empty = false;
    jQuery(":input", "#adminForm_1").each(function () {
        empty = (jQuery(this).val() == "") ? true : empty;
    });
    if (empty) {

        if (confirm('You have not filled out all of the fields, do you wish to continue?')) {

            jQuery("#adminForm_1").validationEngine({
                ajaxSubmit: true,
                ajaxSubmitFile: "/index.php?option=com_database&view=tripdetails&Itemid=12&client=1&task=save",
                ajaxSubmitMessage: "Client Trip Details Saved",
                inlineValidation: false,
                success: false,
                failure: function () {}
            });

        } else {
            return false;
        };

    }

});

^^ 위의 코드는 작동하지 않지만 내가하려는 일을 볼 수 있습니다 ..

도움이 되었습니까?

해결책

양식에서 브라우저의 기본 조치를 방지해야합니다. 이는 기존 방식으로 서버에 제출하는 것입니다. 어느 하나 return false 제출 핸들러가 끝나거나 e.preventDefault() 처음에 :

jQuery("#adminForm_1").submit(function (e) {
    e.preventDefault();
    ...

또는:

jQuery("#adminForm_1").submit(function () {

    var empty = false;
    jQuery(":input", "#adminForm_1").each(function () {
        empty = (jQuery(this).val() == "") ? true : empty;
    });
    if (empty) {
        if (confirm('You have not filled out all of the fields, do you wish to continue?')) {
            ...
            });
        } 
    }
    return false;
});

보다 preventDefault:

브라우저가 기본 조치를 실행하는 것을 방지합니다. 이 메소드가 (해당 이벤트 객체에서) 호출되었는지 여부를 알기 위해 isdefaultprevented 메소드를 사용하십시오.

측면 노트처럼 return false 같은 효과가 있습니다 preventDefault 또한 이벤트의 버블 링이 부모 요소에 대한 버블 링을 중지합니다. jQuery의 달성 메커니즘 스톱 포거레이션 방법. 다시 말해, return false = e.preventDefault + e.stopPropagation

다른 팁

"정상"제출 이벤트가 전파되는 것을 멈추지 않습니다 - 추가해보십시오. return false.validationEnginge() 메소드 (대안으로 그것을 꺼내십시오 if 차단하다):

jQuery("#adminForm_1").submit(function () {
    var empty = false;
    jQuery(":input", "#adminForm_1").each(function () {
        empty = (jQuery(this).val() == "") ? true : empty;
    });
    if (empty) {
        if (confirm('You have not filled out all of the fields, do you wish to continue?')) {
            jQuery("#adminForm_1").validationEngine({
                ajaxSubmit: true,
                ajaxSubmitFile: "/index.php?option=com_database&view=tripdetails&Itemid=12&client=1&task=save",
                ajaxSubmitMessage: "Client Trip Details Saved",
                inlineValidation: false,
                success: false,
                failure: function () {}
            });
        }
        return false;
    }
});

또는

jQuery("#adminForm_1").submit(function () {
    var empty = false;
    jQuery(":input", "#adminForm_1").each(function () {
        empty = (jQuery(this).val() == "") ? true : empty;
    });
    if (empty) {
        if (confirm( ... )) {
            jQuery("#adminForm_1").validationEngine({ ...  });
        }
    }
    return false;
});
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top