2012-04-25 15 views
32

एक एचटीएमएल रीसेट बटन क्लिक करने के बाद,jquery के साथ एचटीएमएल फॉर्म रीसेट के बाद कोड निष्पादित करने के लिए कैसे?

<input type="reset" /> 

मैं कुछ कोड निष्पादित करने के लिए करना चाहते हैं। मैं यह कैसे कर सकता हूं और यह सुनिश्चित कर सकता हूं कि ऐसा करने से पहले फ़ॉर्म रीसेट हो गया था?

+0

आप फ़ॉर्म के रीसेट घटना, हालांकि ऐसा होता है कि बस से पहले इनपुट मानों रीसेट करने के लिए बाध्य कर सकता है। इनपुट नहीं होने के बाद सही कोई ईवेंट नहीं होता है। –

+0

यदि आपको इनपुट रीसेट होने तक प्रतीक्षा करनी है, तो रीसेट ईवेंट के भीतर एक सेट इंटरवल करें जो यह पता लगाता है कि इनपुट के मान रीसेट कर दिए गए हैं, और फिर आपका कोड चलाते हैं। –

+0

@OP आपको कुछ उपयोगी लगता है? – iambriansreed

उत्तर

39

प्रयास करें:

$("input[type='reset']").on("click", function(event){ 

    alert('before reset: ' + $("input[type='text']").val()); 
    // executes before the form has been reset 

    event.preventDefault(); 
    // stops the form from resetting after this function 

    $(this).closest('form').get(0).reset(); 
    // resets the form before continuing the function 

    alert('after reset: ' + $("input[type='text']").val()); 
    // executes after the form has been reset 

});​ 

आप विशिष्ट एक आईडी के साथ शामिल फार्म के लिए नीचे उस रूप चयनकर्ता घटाना चाहें।

फिडल सबूत: http://jsfiddle.net/iambriansreed/Zh5cd/

+0

डाउनवोट क्यों? मैंने गलत क्या किया? – iambriansreed

+0

यह सुनिश्चित नहीं है कि आपको किसने वोट दिया और क्यों, लेकिन मैंने आपको वोट दिया और आपका जवाब स्वीकार कर लिया। धन्यवाद। –

+0

@BrianDavidBerman धन्यवाद! – iambriansreed

0

इस मदद

$("input[type='reset']").on("click", function(){ 
    alert("the form has been reset"); 
    }); 

लिंक jsfiddle होगा

$('your-form').bind('reset', function() { 
    alert('hi'); 
}); 
+0

[यह लिंक] (http://forum.jquery.com/topic/trapping-the-form-reset-event) पृष्ठभूमि और कुछ दस्तावेज प्रदान करना चाहिए कि यह कैसे और क्यों काम करता है, और साथ ही, और क्यों नहीं है इसके बारे में jQuery दस्तावेज़ में। –

+0

यह फ़ॉर्म रीसेट होने से पहले निष्पादित करता है। –

+0

घटना के अंदर एक परिवर्तन घटना के लिए बाध्यकारी आज़माएं, क्योंकि अगला परिवर्तन रीसेट एक्शन –

-5

रीसेट बटन के लिए एक click घटना जोड़ें, और यह इस तरह दिखना है:

function(e) { 
    setTimeout(function() { 
     // your actual code here 
    },1); 
} 
2

अद्यतन: preventDefault बजाय return false का उपयोग करें।

$('input[type="reset"]').click(function(evt) { 
    // Prevent the reset button from firing the form's reset event again 
    evt.preventDefault(); 
    $(this).closest('form').get(0).reset(); 
    // At this point your form's inputs should have their values reset 
}); 

http://jsfiddle.net/EYqrX/1/

+0

'झूठी वापसी; 'सबमिट करने से फॉर्म को रोकने से कहीं अधिक है। देखें: http://stackoverflow.com/a/1357151/144665 – iambriansreed

+1

मैंने तदनुसार अपना जवाब अपडेट किया। इसे पकड़ने के लिए धन्यवाद। –

+0

ओपी की अलर्ट कॉल को छोड़कर, यह मेरे जैसा दिखता है। :) – iambriansreed

119

मैं विशेष रूप से नहीं रीसेट बटन के बजाय प्रपत्र पर रीसेट घटना बंधन का विचार की तरह है। एक फॉर्म को अन्य माध्यमों से रीसेट किया जा सकता है और उन मामलों में आपका ईवेंट ट्रिगर नहीं होगा।

इसके बजाय, फ़ंक्शन को रीसेट ईवेंट पर बाध्य करें लेकिन इसे तत्काल सेटटाइमआउट में रखें। यह सुनिश्चित करेगा कि फ़ंक्शन को कॉल करने से पहले फ़ॉर्म वास्तव में रीसेट हो गया है।

$('form').on('reset', function(e) 
{ 
    setTimeout(function() { /* ... */ }); 
}); 
+0

डबल प्लस अपवोट। – quillbreaker

+0

सेटटाइमआउट को सार्वभौमिक रूप से समर्थित करने के लिए दूसरा पैरामीटर ओमेट कर रहा है? w3schools और मोज़िला दोनों इसे एक आवश्यक param के रूप में सूचीबद्ध करते हैं। मेरे सभी ब्राउज़रों में ठीक काम करता प्रतीत होता है, लेकिन मुझे यकीन नहीं है कि पुराने आईई – Kip

+1

@ किप हाँ यह पुरानी आईई में ठीक काम करता है। आईई 6 का परीक्षण नहीं किया है, लेकिन मैं इसके बारे में ज्यादा चिंतित नहीं हूं। सख्त मोड में भी ठीक काम करता है। हालांकि शून्य जोड़ना आपके कोड में कुछ स्पष्टता जोड़ सकता है। –

1

सुझाव है कि आप reset बटन के डिफ़ॉल्ट व्यवहार को रोकने के लिए की जरूरत नहीं है के बजाय इस तरह से <input type='Reset'> उपयोग <input type = "button"> का उपयोग करने का है। आपको बस बटन पर onclick विशेषता जोड़नी है और फ़ंक्शन में आप फ़ॉर्म की रीसेट विधि को कॉल कर सकते हैं जहां आप चाहें व्यवहार की इच्छा और नियंत्रण कर सकते हैं। निम्नलिखित कोड दिखाता है कि

HTML:

<input type="button" value="Limpiar" onclick="resetForm(this);"/> 

जावास्क्रिप्ट:

function resetForm(element) { 
    //Do what you need before reset the form 
    element.form.reset(); //Reset manually the form 
    //Do what you need after reset the form 
} 
0
एक उदाहरण onreset घटना कैसे आप सामान्य रूप से onsubmit घटना का उपयोग करने के लिए इसी तरह का प्रयोग करने के

सबमिट बटन पर क्लिक करने के लिए फॉर्म तत्व का । स्पष्टीकरण के लिए onsubmit उदाहरण जोड़ा गया है।

अपनी स्क्रिप्ट में:

function submitForm(form){ 
    var xhr = new XMLHttpRequest(), 
     data = new FormData(form); 

    xhr.open("POST", url, true); 
    xhr.onload = function(event) { 
     switch (event.target.status){ 
      case 200: 
       onSuccess(event); 
       break; 
      default: 
       onError(event); 
     } 
    }; 
    xhr.send(data); 
    return false; 
} 

function resetForm(form){ 
    var elements = form.elements; 
    // set some initial values to those form elements 
    return false; 
} 

अपने html में:

<form onsubmit="return submitForm(this);" onreset="return resetForm(this);"> 
    <button type="submit">Save</button> 
    <button type="reset">Reset</button> 
</form> 
संबंधित मुद्दे