سؤال

أواجه مشكلة في تقديم نموذج وتأكيد JavaScript. في الأساس ، يتم استدعاء JavaScript التالي عند الضغط على زر "إرسال".

function confirmation() {
    var answer = confirm("Are you sure you wish to edit?")
    if (answer)
    {
        window.location = "#editform2";
    }
}

ومع ذلك ، عندما أضغط على الإلغاء بدلاً من موافق ، يتم تنفيذ JavaScript بشكل صحيح ، لأنني أشاهد شريط العناوين ولا يتم تحديثه إلى #editform2. النموذج ، ومع ذلك ، لا يزال يخضع. يبدو أن تحديث الصفحة. إليك الأجزاء ذات الصلة من النموذج:

//Form is encoded in PHP
<form method=\"post\">
//Form is in here
<input type=\"submit\" value=\"Edit\" onclick=\"confirmation()\">

لذا فإن النموذج لا يعرف إلى أين يسير الأمر ، فهو يقوم فقط بتحديث الصفحة ، ويحدث الصفحة المعالج أيضًا. لذلك يتم معالجتها على الرغم من أنني نقرت على إلغاء ، ويجب أن يحتفظ JavaScript به على نفس الصفحة. إلى جانب نقل المعالجة إلى صفحة مختلفة ، ما هي حلولي؟

هل كانت مفيدة؟

المحلول

إنه يعمل مثل هذا لأنه زر سمية ويتم تقديم النموذج في كل حالة. تعيين معرف للنموذج وتغيير نوع الإدخال:

<form method="post" id="formid">
<input type="button" value="Edit" onclick="confirmation()">

واتصل بهذه الوظيفة عند النقر:

function confirmation() {
    var answer = confirm("Are you sure you wish to edit?")
    if (answer)
    {
        document.getElementById("formid").submit();
    }
}

نصائح أخرى

لا تستخدم حدث OnClick لزر الإرسال ، استخدم حدث OnSubmit في النموذج الخاص بك:

document.forms[0].onsubmit = function () {
    return confirm("Are you sure you wish to edit?");
}

قد ترغب في إضافة سمة معرف إلى النموذج الخاص بك لتحديده.

الحفاظ على ارتباط الحدث على رمز JavaScript ؛ ليس على سمات مضمّنة على HTML الخاص بك ، يجعل الكود الخاص بك أكثر قابلية للصيانة وسهلة التصحيح.

محاولة:

return answer;

في نهاية الوظيفة وتأكد من إرجاع طريقة Onclick هذا. مثل ذلك:

<input type="submit" value="Edit" onclick="return confirmation()">

هذا من شأنه أن يجعل الوظيفة عودة خاطئة ولا يتم نشر النموذج.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top