मैं रूपों के लिए घटनाओं प्रस्तुत बाध्यकारी किया गया है, और यह सुनिश्चित करना है कि वे फार्म नहीं टूटते, इस तरह jQuery का उपयोग कर 'प्रस्तुत' के बराबर की उपस्थिति में प्रस्तुत:कैसे करें जावास्क्रिप्ट एक इनपुट आईडी
jQuery('form').submit(function(e){
var form = this;
e.preventDefault();
alert('1');
setTimeout(function() {
alert('2');
form.submit();
}, 1000);
});
यह सब अच्छा और अच्छा है, सिवाय इसके कि, अगर किसी कारण से फ्रंट एंड डेवलपर ने इस फ़ॉर्म का एक बच्चा इनपुट = "सबमिट" की आईडी दी है, तो यह ब्रेक, form.submit()
एक जावास्क्रिप्ट त्रुटि फेंकता है (क्रोम में, 'अनकॉट टाइप एरर: ऑब्जेक्ट की संपत्ति 'सबमिट' # एक समारोह नहीं है ')।
आप इस बात का एक उदाहरण यहां देख सकते हो रहा: http://jsfiddle.net/q68ky/ (यहाँ व्यवहार अगर कोई <input id="submit">
: http://jsfiddle.net/JpXzL/
अब, मैं जानता हूँ कि मैं रूपों है कि का एक आईडी के साथ बच्चे हैं पर बाध्यकारी से रोक सकते हैं 'प्रस्तुत 'jQuery('form').not(:has('#submit')).submit()
, और साथ प्रपत्र ठीक पर कार्रवाई करेंगे, लेकिन मेरे लिए बाध्य उन रूपों के लिए कभी सक्रिय नहीं होगा
तो, सवाल:। कैसे मैं सुरक्षित रूप से, सभी रूपों को यह jQuery समारोह बाध्य कर सकते हैं साथ <input id="submit">
संपादित करें: यह ध्यान देने योग्य है कि अगर मैं सबमिट हैंडलर को अनबिंड करता हूं और फिर एक jQuery को jQuery(form)
पर सबमिट करता हूं तो यह समस्या दूर नहीं जाती है।
मैं एक आदर्श पता दुनिया, मुझे किसी इनपुट फॉर्म पर 'id =" सबमिट नहीं करना चाहिए ", लेकिन मैं गारंटी नहीं दे सकता कि यह अस्तित्व में नहीं होगा। – Yahel
@ys, आप समझते हैं कि इस कोड का अंतहीन लूप सही होगा? –
@ गैबी संख्या, 'form.submit() 'डीओएम तत्व पर जमा हो रहा है, jQuery तत्व नहीं। अगर यह '$ (फॉर्म) था। सबमिट करें(); 'आप सही होंगे, और मुझे jQuery हैंडलर को अनबिंड करने की आवश्यकता होगी, जैसे: jsfiddle.net/LKUhV। साथ ही, जैसा कि आप मूल jsfiddle पर देखते हैं, इसके परिणामस्वरूप 'चेतावनी()' का एक अनंत लूप ट्रिगर नहीं होता है। – Yahel