لماذا تؤدي تسمية زر إرسال نموذج HTML الخاص بك إلى "إرسال" إلى كسر الأشياء؟

StackOverflow https://stackoverflow.com/questions/876243

سؤال

في نماذج الويب ASP.NET وASP 3 (Classic ASP)، واجهت مشكلة تتمثل في أن تسمية زر إرسال النموذج الخاص بك "إرسال" من شأنه أن "يعطل الأشياء".وفيما يلي HTML المقدمة:

<input type="submit" name="Submit" value="Submit" id="Submit" />

أقول "كسر الأشياء" لأنني لست متأكدًا تمامًا من السبب أو ما حدث.لكن الأعراض عادة كانت أن الضغط على زر الإرسال لا يؤدي إلى شيء في بعض الأحيان، أي.لم ينجح الأمر.لكن في بعض الأحيان نجحت.

في الواقع، لقد قمت للتو بإنشاء اختبار سريع من صفحة واحدة باستخدام الكود أدناه، وكان الإرسال جيدًا:

<form id="form1" runat="server">
<div>
    <asp:TextBox ID="txtTest" runat="server" />
    <asp:Button ID="Submit" runat="server" Text="Submit" />
</div>
</form>

لكن, ، في الماضي، ظهرت هذه المشكلة، وكانت إعادة تسمية الزر تؤدي دائمًا إلى اختفاء الأعراض.

لذا، هل يعرف أي خبير في HTML/HTTP/المتصفح أي سبب يجعل تعيين id = "إرسال" على زر إرسال يسبب أي مشاكل؟

يحرر

هذا لذا تعليق يبدو أنه يشير إلى أن كلمة "إرسال" هي كلمة رئيسية محجوزة.ولكن لماذا تتداخل سمات "المعرف" أو "الاسم" مع هذا؟وكيف يتم تنفيذ هذه الكلمة الرئيسية "المحجوزة" بطريقة قد تسبب صراعات؟

شكرًا لك مرة أخرى

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

المحلول

ال form العنصر لديه طريقة اسمه submit, ، ولكن لديه أيضًا عناصر النموذج في النموذج كأعضاء.

إذا كان لديك زر في النموذج المسمى submit, ، يمكنك الوصول إليه باستخدام document.form1.submit.ومع ذلك، لأن هذا هو نفس الاسم submit الطريقة، لم يعد هناك أي وسيلة للوصول إلى تلك الطريقة.إذا استخدمت الطريقة لإرسال النموذج، فلن ينجح ذلك بعد الآن.

على سبيل المثال، إذا كان لديك زر يرسل النموذج باستخدام Javascript، فلن يعمل ذلك:

<input type="button" name="submit" onclick="this.form.submit();" value="try" />

عندما يحاول الزر استخدام submit بدلاً من ذلك، سيحصل على مرجع لنفسه (ورسالة خطأ عند محاولة الاتصال به، لأن الزر ليس وظيفة).

نصائح أخرى

أود أن أحثك ​​على الابتعاد عن كل الكلمات المحجوزة في DOM لجافا سكريبت.استخدم "my" أمام كل ما تحدده، أو $، أو أي شيء آخر من الواضح أنه لن يتعارض مع الكلمات المحجوزة التي يمكنك عن طريق الخطأ تحميلها الزائد والتسبب في الفوضى.

تتم تسمية الكود الخلفي الذي تم إنشاؤه والذي يسمح لك بربط الأحداث بالكائن بناءً على القيم التي حددتها.

فقط استخدم onsubmit إذا كان هناك مشكلة في إرسال النموذج

<form id="form1" runat="server" onsubmit="this.submit()">
<div>
    <asp:TextBox ID="txtTest" runat="server" />
    <asp:Button ID="Submit" runat="server" Text="Submit" Type="submit"/>
</div>
</form>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top