2013-02-28 12 views
16

क्या एचटीएमएल 5 सत्यापन चरणों से पहले फॉर्म submit कार्रवाई को पकड़ने का कोई तरीका है?एचटीएमएल 5 सत्यापन से पहले सबमिट करें

यह what I have tried है:

एचटीएमएल

<form method='post' > 
    <fieldset> 
     <input type='email' name='foo' required /> 
     <input type='submit' /> 
    </fieldset> 
</form> 

jQuery

$('form').submit(function() { 
    $('fieldset').addStyle('error'); 
    return false; 
}) 

लेकिन submit केवल एक बार एचटीएमएल 5 सत्यापन गुजरता शुरू हो रहा है।

+1

क्या आपको HTML5 सत्यापन की आवश्यकता है? यदि नहीं, तो आप इसे हमेशा 'novalidate' से अक्षम कर सकते हैं। –

उत्तर

5

नहीं, एचटीएमएल 5 सत्यापन होता है से पहले किसी भी घटना भेजने के बाद, सभी ब्राउज़रों में, बटन पर क्लिक तरह तो यह घटना प्रकार बदलने से संभव हो, अन्य नहीं है:

$('input[type="submit"]').on('click', function() { 
    $('fieldset').addClass('error'); 
}); 

FIDDLE

+1

+1 अच्छा विचार ... – ManseUK

+0

कूल - ठीक है जो मैं देख रहा हूं। – Muleskinner

+0

वास्तव में आप कोड से कुछ खो रहे हैं। 'E" को 'फ़ंक्शन (ई)' में और पहले पंक्ति 'e.preventDefault' में फ़ंक्शन के अंदर जोड़ें, अन्यथा फॉर्म सबमिट होगा। फिर जब आप तैयार हों तो '$ (' फॉर्म ') के अंत में जोड़ें। सबमिट करें() ' – CodeArtist

7

फार्म पर मान्यता निष्क्रिय करने के लिए jQuery का उपयोग करें जब पेज के पहली बार लोड ताकि आप पहले अपने onsubmit हैंडलर समाप्त हो गया है घटनेवाला से किसी भी मान्यता रोका जा सकता है:

$(document).ready(function(){ 
    $('form').attr('novalidate','novalidate'); 
}) 
,210

और फिर अपने onsubmit समारोह के अंत में, मैन्युअल रूप से जावास्क्रिप्ट के माध्यम से खेतों में से प्रत्येक पर एचटीएमएल 5 सत्यापन बटन (checkValidity() का प्रयोग करके)

0

बदलें से

<input type='submit' /> 

एक नियमित रूप से बटन

को चलाने
<input type='button' id="submit" /> 

और उसके बाद, बस क्लिक करें घटना पर कब्जा और अपने आप

$('#submit').on('click', function() { 
    $('fieldset').addStyle('error'); 

    // if everything is ok 
    $('form').submit(); 
}) 
भेज सकता हूं
+0

हां, मैंने इसके बारे में सोचा लेकिन विचार को खारिज कर दिया क्योंकि यह फ़ॉर्म के सामान्य व्यवहार को तोड़ देता है, उदाहरण के लिए ENTER pr डिफ़ॉल्ट नहीं जमा करता है – Muleskinner

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