2015-01-03 5 views
5

मुझे यह जांचने की ज़रूरत है कि फ़ॉर्म उपयोगकर्ता द्वारा सबमिट किया गया है और उसके बाद प्रोग्राम को प्रोग्रामेटिक रूप से सबमिट करने से पहले कुछ ऑपरेशन करें।सबमिट बटन को "सबमिट" नाम देने पर मेरा फॉर्म सबमिट क्यों नहीं होता है?

तो मैं इस कोड है:

$('form').submit(function (e) { 
    e.originalEvent && e.preventDefault(); 

    //I change some things in the form here. 

    !e.isTrigger && $(this).submit(); 
}); 

यह ठीक काम करता है, लेकिन जब प्रपत्र सबमिट बटन का नाम है "submit" ऐसा नहीं है।

बटन को "सबमिट" नाम दिया गया है, तो यह ठीक काम करता है। (अपरकेस "एस")

मैं सिर्फ इतना उत्सुक हूं कि यह क्यों है?

यहाँ एक demo fiddle

+0

कुछ jQuery क्विर्क होना चाहिए, क्योंकि यदि आप जावास्क्रिप्ट को हटाते हैं, तो दोनों फॉर्म ठीक काम करते हैं। – MightyPork

उत्तर

5

आप कुछ प्राचीन डोम quirks के शिकार हो गए है। अर्थात्, डोम में रूपों उनके सभी इनपुट तत्वों (और बटन, भी) अपने-अपने नाम से गुण के रूप में सामने आ रहा है:

<form> 
    <input name="foo"> 
</form> 

परिणामों में:

var form = document.forms[0]; 
form.foo === document.getElementsByName('foo')[0]; 

जो दुर्भाग्यपूर्ण है, आप किसी भी है जब submit नाम से नियंत्रित करें, क्योंकि यह आपके मूल फ़ॉर्म की सबमिट विधि को छाया करता है।

संपादित करें: वैसे, उन समस्याओं में से कई को पढ़ने के लिए मैं Kangax' fantastic DOMLint documentation पर एक नज़र डालने का सुझाव देता हूं।

संबंधित मुद्दे