1

確認がtrueの場合、別の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;
        };

    }

});

^^上記のコードは機能しませんが、私がやろうとしていることがわかります。

4

2 に答える 2

3

フォームに対するブラウザのデフォルトのアクション、つまり従来の方法でサーバーに送信することを防ぐ必要があります。送信ハンドラー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のメカニズムは、stopPropagationメソッドにあります。言い換えれば、return false=e.preventDefault + e.stopPropagation

于 2009-09-24T05:35:47.810 に答える
1

「通常の」送信イベントの伝播を停止しているわけではありません。メソッド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;
});
于 2009-09-24T05:36:37.017 に答える