2010-01-24 17 views
5

मेरे पास एक फॉर्म पर कुछ क्लाइंट-साइड जावास्क्रिप्ट सत्यापन है। यह बहुत अच्छा काम करता है। लेकिन मैं उन उपयोगकर्ताओं को समायोजित करना चाहता हूं जिनके पास जावास्क्रिप्ट अक्षम है। मेरा सत्यापन फॉर्म के ऑनसममिट विशेषता से नहीं चलाया जाता है, यह एक ईवेंट हैंडलर है जो फ़ॉर्म में सामान्य बटन से जुड़ा हुआ है।Supress सबमिट करें सबमिट करें/सबमिट बटन केवल तभी सक्षम है जब जावास्क्रिप्ट अक्षम है

<input type="button" value="Ok" class="okbtn"> 

तो मुझे लगता है कि मेरी मान्यता करता है इसकी क्लिक करें घटना के लिए एक ईवेंट हैंडलर रजिस्टर: तो बटन कि सत्यापन की शुरूआत की और प्रस्तुत वास्तव में एक सबमिट करते हैं, यह सिर्फ टाइप है = "बटन" नहीं है। यह प्रस्तुत करता है, तो सब कुछ गुजरता है:

function clickHandler(event){ 
    thisForm = event.data.caller 
    var valid = submitValidation(thisForm); 
    if (valid == true){ 
     thisForm.submit(); 
    } else{ 
     } 
} 

मेरे समस्या है अगर उपयोगकर्ता जे एस अक्षम है, वहाँ प्रपत्र प्रस्तुत करने के लिए कोई रास्ता नहीं है। मैं बटन type="submit" बना सकता हूं, जो जेएस-अक्षम उपयोगकर्ताओं के लिए काम करेगा, लेकिन फिर यह हमेशा फॉर्म सबमिट करेगा और जेएस-सक्षम उपयोगकर्ताओं के लिए सत्यापन को बाईपास करेगा। (सत्यापन चल जाएगा लेकिन यह वैसे भी सबमिट करेगा)। अगर मैं बटन type="submit" बना देता हूं तो क्या मैं सबमिट किए गए ईवेंट को ब्लॉक कर सकता हूं? मैं JQuery का उपयोग कर रहा हूं, क्या JQuery सबमिट को दबा सकता है? मैं चाहता हूं कि यह मान्य हो जाए कि यह सबमिट हो जाए या नहीं।

उत्तर

12

आप की तरह कुछ कर रही द्वारा किए गए क्लिक प्रस्तुत दबाने कर सकते हैं:

$('input[type=submit]').bind('click', function(e) { 
    e.preventDefault() // prevents the form from being submitted 
    clickHandler(); // the custom submit action 
}); 

या, आप वास्तविक रूप में इस तरह प्रस्तुत दबाने कर सकते हैं:

$('form').bind('submit', function(e) { 
    e.preventDefault(); 
    // etc 
}); 
+0

मीठा। एक पंक्ति परिवर्तन :) – Purrell

3

आप form तत्व में ऑनसममिट हैंडलर सेट करके सबमिट को दबाने के लिए दबा सकते हैं, और फिर यदि यह सत्यापन वापसी को विफल कर देता है।

तो thisForm.submit() पर कॉल करने के बजाय सत्यापन विफल होने पर गलत हो जाएगा या गलत होने पर आप वापस आ जाएंगे।

3

बदलें एक सामान्य करने के लिए बटन बटन और बाँध प्रस्तुत फॉर्म पर submit() ईवेंट की सत्यापन जांच।

$("form").submit(function() { 
    if (!submitValidation()) { 
    return false; 
    } 
}); 
डॉक्स से

:

submit घटना एक तत्व को भेजा जाता है उपयोगकर्ता करने का प्रयास करने के लिए फ़ॉर्म सबमिट। इसे तत्वों के लिए केवल संलग्न किया जा सकता है। प्रपत्र को स्पष्ट <input type="submit">, <input type="image">, या <button type="submit"> पर क्लिक करके सबमिट किया जा सकता है, या कुछ फॉर्म तत्व फोकस होने पर एंटर दबाकर सबमिट किया जा सकता है।

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