سؤال

أحاول الاتصال بوظيفة مسج أخرى إذا تأكيد صحيحة، إليك الرمز:

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:

يمنع المتصفح من تنفيذ الإجراء الافتراضي. استخدم الطريقة isdefaultprented لمعرفة ما إذا كانت هذه الطريقة تم استدعاؤها على الإطلاق (على كائن الحدث هذا).

كما المذكرة الجانبية return false لديه نفس التأثير كما preventDefault بالإضافة إلى أنه يتوقف عن فقاعة الحدث عناصر الوالدين. آلية مسج لتحقيق ذلك في توقف طريقة. بعبارات أخرى، 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