2009-05-31 18 views
8

सवाल यहाँ के एक जोड़े:जावास्क्रिप्ट में फॉर्म सबमिशन को पकड़ने की घटना क्या है?

  • मैं सोच रहा था क्या घटना मैं प्रपत्र प्रस्तुत करने पर कुछ जावास्क्रिप्ट निष्पादित करने के लिए प्रयोग करते हैं (कुछ सत्यापन करने के लिए)?
  • एक बार जब मैंने अपना सत्यापन किया है, तो मैं जावास्क्रिप्ट में फॉर्म कैसे सबमिट करूं?

चीयर्स ...

उत्तर

10

मान लीजिए कि आप एक रूप myForm नामित करते हैं:

try { 
    form.addEventListener("submit", someFunction, false); 
} catch(e) { 
    form.attachEvent("onsubmit", someFunction); //Internet Explorer 8- 
} 

नोट::

var form = document.getElementById('myForm'); 

प्रस्तुत करने को पकड़ने के लिए आप प्रपत्र बंद करना चाहते हैं जमा करने से, आप someFunction वापसी झूठी बनाते हैं।

form.submit(); 
+1

यह काम नहीं करता है। आश्चर्य है कि यह क्यों उखाड़ फेंक दिया गया है? form.submit() वही काम नहीं करता है जैसे <इनपुट प्रकार = "सबमिट करें" /> http://jsfiddle.net/RgRwp/18/ – Serhiy

+0

@Serhiy पर इस कोड को चलाने का प्रयास करें: क्या मैंने कभी दावा किया है कि यह करता है? सवाल यह था कि 'एक बार मैंने अपना सत्यापन किया है, तो मैं जावास्क्रिप्ट में फॉर्म कैसे जमा करूं?' मुझे लगता है कि यह उस टुकड़े का जवाब देता है। –

+2

मुझे नहीं लगता। और मुझे लगता है कि आपने दोनों सवालों का सही जवाब दिया है। यह सिर्फ इतना है कि वे एक दूसरे के साथ संयोजन में काम नहीं करते हैं। इससे मुझे थोड़ा परेशान हुआ क्योंकि इस संयोजन ने अतीत में अपना बहुत समय बर्बाद कर दिया है और मैं उस छेद को नीचे जाने के लिए किसी से नफरत करता हूं। मुझे लगता है कि मुझे शायद टिप्पणियों में शिकायत करने के बजाय जवाब संपादित करना चाहिए। – Serhiy

3

आप jQuery का उपयोग करते हैं, यह एक अच्छा निर्मित फ़ॉर्म सबमिशन की घटना हुक है कि जीवन बहुत आसान बना सकते हैं है:

प्रपत्र प्रस्तुत करने के लिए।

http://docs.jquery.com/Events/submit

2

1) आप OnSubmit घटना के लिए देख रहे: निम्नलिखित की जाँच करें?

2) आप ऑनसबमिट ईवेंट पर मान्य() जैसे फ़ंक्शन को कॉल कर सकते हैं और सत्यापन विफल होने पर झूठी वापसी कर सकते हैं। अगर झूठी वापसी पर वापस लौट आती है तो सबमिट करें।

की तरह,

<form name="test" OnSubmit = "return Submit()"> 

function Submit() 
{ 
return Validate() 
} 

function Validate() 
{ 
//Validation code goes here 
} 
4

आप addEventListener(event, callback) उपयोग कर सकते हैं हो सकता है लेकिन यह ठीक से इंटरनेट एक्सप्लोरर से कभी नहीं समर्थित किया गया है।

आईई इसके बजाय attachEvent(event, callback) का उपयोग करता है।

मैं दृढ़ता से एक प्रीबिल्ट एडवेन्ट फ़ंक्शन (वहां उपलब्ध बहुत सारे) या jQuery, प्रोटोटाइप, मूटूल इत्यादि जैसी लाइब्रेरी का उपयोग करने की सलाह देता हूं क्योंकि उनमें से सभी में उत्कृष्ट ईवेंट हैंडलिंग फ़ंक्शन अंतर्निहित हैं।

0

मैंने साशा के पद पर सेरी द्वारा टिप्पणियों पर एक नज़र डाली। JsFiddle उदाहरण सेर्ही प्रदान की दिलचस्प था, और मैं एक जवाब है कि व्यवहार कि सेर्ही उल्लेख का वर्णन लिखना चाहते थे:

var form = document.getElementById('myForm'); 

प्रस्तुत करने को पकड़ने के लिए जब एक प्रस्तुत का उपयोग कर:

मान लीजिए कि आप एक रूप myForm नामित करते हैं बटन (< इनपुट प्रकार = 'प्रस्तुत' >):

try { 
    form.addEventListener("submit", validationFunction, false); 
} catch(e) { 
    form.attachEvent("onsubmit", validationFunction); //Internet Explorer 8- 
} 

नोट: यदि आप सबमिट करने से प्रपत्र बंद करना चाहते हैं, तो आप validationFunction वापसी झूठी हैं।

form.submit(); 

नोट::

जावास्क्रिप्ट के माध्यम से प्रपत्र प्रस्तुत करने के लिए आप एक < इनपुट प्रकार = "बटन" का उपयोग करते हैं onclick = "form.submit()"/>, ऑनसबमिट ईवेंट हैंडलर्स के साथ जोड़ा attachEvent नहीं कहा जाएगा। इसलिए, आपको कुछ ऐसा उपयोग करना चाहिए:

< इनपुट प्रकार = "बटन" ऑनक्लिक = "अगर (सत्यापन()) form.submit();"/>

या वैकल्पिक रूप से, अगर आप एक बटन है:

आप बटन के क्लिक करें घटना के लिए संलग्न करने के लिए जावास्क्रिप्ट जोड़ सकते हैं। var btnValidateAndSubmit = document.getElementById ("btnValidateAndSubmit");

try { 
    btnValidateAndSubmit .addEventListener("click", validationAndSubmitFunction, false); 
} catch(e) { 
    btnValidateAndSubmit .attachEvent("onclick", validationAndSubmitFunction); //Internet Explorer 8- 
} 

अंत में, मान लीजिए कि आप एक सूची आइटम को संपादित करने के लिए एक SharePoint वेब फार्म पर कार्य करते हैं, और आप वेब फार्म के लिए कस्टम मान्यता जोड़ना चाहते हैं। ठीक बटन के लिए ऑनक्लिक पर कस्टम सत्यापन जोड़ने के लिए आप वेब फ़ॉर्म में निम्न जावास्क्रिप्ट जोड़ सकते हैं।

var oElements = document.getElementsByTagName("input"); 
for (var i=0; i< oElements.length; i++) 
{ 
    var elementName = oElements[i].getAttribute("Title"); 
    var elementType = oElements[i].getAttribute("type"); 
    var elementValue = oElements[i].value; 

    if (elementType=="button" && elementValue=="OK") 
    { 
    var okbutton = oElements[i]; 

    // alert("typeof okbutton.onclick = "+typeof okbutton.onclick); 
    if (typeof okbutton.onclick == "function") 
    { 
     var previousfunction = okbutton.onclick; 

     okbutton.onclick = function() 
     { 
      if (validateForm()) 
      { 
       previousfunction(); 
      } 
     }; 

    } 
    else 
    { 
     var aspnetForm = document.getElementById("aspnetForm"); 
     aspnetForm.attachEvent("onsubmit",validateForm); 

     okbutton.onclick = function() 
     { 
      if (validateForm()) 
      { 
       aspnetForm.submit(); 
      } 
     }; 
    } 


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