2012-03-01 19 views
7

आगे का उपयोग कर अपनी समस्या के लिए प्रस्तुत नहीं होगा - jQuery on submit validation, with modal dialog at the end?jQuery - प्रपत्र यहाँ jQuery

यह प्रपत्र की तरह लगता है बस jQuery का उपयोग कर प्रस्तुत नहीं होंगे। यहाँ एक बहुत ही सरल स्तर पर मेरी कोड है:

<script type="text/javascript"> 

    $(document).ready(function(){ 
     $(document).click(function() { 
      $('#inputform').submit(); 
     }); 

     $("#inputform").submit(function() { 
      alert('test'); 
      return true; 
     }); 
    }); 
</script> 

<form method="POST" action="<?php echo CURRENT_PAGE ?>" id="inputform"> 

<button type="submit" name="submit" id="submit">Submit form</button> 

</form> 

क्लिक करने से शरीर 'परीक्षण' चेतावनी प्रदर्शित करता है लेकिन प्रपत्र प्रस्तुत नहीं करता है पर। साथ ही, अलर्ट बॉक्स को बंद करने पर, जब आप दोबारा क्लिक करेंगे तो यह फिर से दिखाई नहीं देगा।

बस सबमिट बटन पर क्लिक करके अलर्ट प्रदर्शित करता है तो फॉर्म को अपेक्षित रूप से सबमिट करता है।

वास्तव में बेवकूफ सवाल (मुझे पता है) के लिए खेद है, लेकिन मुझे यहां एक नुकसान है। स्व-परीक्षा!

+0

'$ (" # इनपुटफॉर्म ") हटाएं। सबमिट करें (फ़ंक्शन() {वापसी सही;}); – mgraph

+0

@ tj - क्षमा करें! मैंने इसे जोड़ने की कोशिश की लेकिन यह उपरोक्त स्वरूपण के साथ गड़बड़ कर रहा था। @ mgraph - धन्यवाद, लेकिन मेरे पास –

उत्तर

22

समस्या यह है कि आपने अपना सबमिट बटन "सबमिट" नाम दिया है। इसे किसी और चीज़ के बारे में बदलें और यह काम करेगा। (इसके अलावा id, उन्हें एक ही रखने के लिए, some browser issues की वजह से कम से कम नहीं बदल सबसे अच्छा।)

क्यों: फार्म तत्वों एक संपत्ति submit बुलाया समारोह आप उन्हें प्रस्तुत करने के लिए कॉल कर सकते हैं जो की है। (jQuery जब आप jQuery उदाहरण पर submit पर कॉल करते हैं तो कवर के तहत इसका उपयोग करता है।) लेकिन फॉर्म तत्व भी फ़ील्ड के नाम का उपयोग करके फॉर्म में से प्रत्येक फ़ील्ड के लिए गुण प्राप्त करते हैं, और इसलिए यदि आपके पास "सबमिट" नामक फ़ील्ड है , यह submit फ़ंक्शन ओवरराइड करता है, जिसका अर्थ है कि आप प्रोग्राम को प्रोग्रामेटिक रूप से सबमिट नहीं कर सकते हैं।

कार्य उदाहरण: Live copy | Live source

<script type="text/javascript"> 

    $(document).ready(function(){ 
     $(document).click(function() { 
      $('#inputform').submit(); 
     }); 

     $("#inputform").submit(function() { 
      alert('test'); 
      return true; 
     }); 
    }); 
</script> 

<form method="GET" action="http://jsbin.com/uwuzon" id="inputform"> 
<input type="text" name="foo" value="bar"> 
<button type="submit" name="someOtherName" id="someOtherName">Submit form</button> 
</form> 

(महत्वपूर्ण परिवर्तन name="someOtherName" id="someOtherName" हिस्सा है अन्य परिवर्तन [फ़ॉर्म की ऐसी गतिविधि और विधि बदलते] अभी तो यह JSbin पर काम करता है कर रहे हैं।।)

साइड नोट: आप की जरूरत नहीं है return true; आपके submit ईवेंट हैंडलर में फ़ॉर्म सबमिशन की अनुमति देने के लिए। आपको बस return false; पर जाना है। :-)

+0

में बहुत सी सत्यापन है, यह अब पूरी तरह से काम कर रहा है, बहुत बहुत धन्यवाद! मुझे कभी पता नहीं था कि जमा करने का नाम और आईडी इतनी सारी समस्याएं पैदा करेगी: $ –

+0

@xndx: :-) अच्छा सौदा, खुशी हुई जिसने मदद की! –

+1

हाँ मैंने बस इस बग/फीचर को डिबग करने में लगभग एक घंटा बिताया ... –