نموذج HTML وتأكيد JavaScript
-
20-09-2019 - |
سؤال
أواجه مشكلة في تقديم نموذج وتأكيد 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()">
هذا من شأنه أن يجعل الوظيفة عودة خاطئة ولا يتم نشر النموذج.