2011-11-21 21 views
6

मेरे पास दो सबमिट बटन हैं, जारी रखें। जब मैं बैक पर क्लिक करता हूं तो क्लाइंट सत्यापन को अक्षम करने के लिए मुझे क्या करना चाहिए। मैं बटन विशेषता के लिए cancel class जोड़ने की कोशिश कर रहा था लेकिन यह सीम मदद नहीं करता है।अक्षम सबमिट सबमिट बटन के लिए अविभाज्य सत्यापन सक्षम करें

यूपीडी। असल में यह cancel class काम कर रहा है। लेकिन अगर आप इसे गतिशील रूप से जोड़ते हैं (जावास्क्रिप्ट द्वारा) यह काम नहीं कर रहा है।

उत्तर

3

बटन को अपहरण करें जावास्क्रिप्ट का उपयोग करके फ़ॉर्म सबमिशन के लिए क्लिक करें।

यहाँ jQuery के साथ अच्छा उदाहरण है:

$("#MyButton").click(function(e) { 

    //submit your form manually here 
    e.preventDefault(); 
}); 
14

मैं कुछ बटन के लिए एक ईवेंट हैंडलर, जो उस विशेष फार्म पर सत्यापनकर्ता वस्तु की सेटिंग बदल संलग्न।

$(".jsCancel").click(function (e) { 
    $(e.currentTarget).closest("form").validate().settings.ignore = "*" 
}); 

यह एमवीसी 3 में मेरे लिए एक आकर्षण की तरह काम करता है।

मुझे नहीं पता कि यह आपको विशेष रूप से मदद करता है, लेकिन जब से मैं AJAX फॉर्म का उपयोग करता हूं, तो मुझे एजेक्स सफलता की घटना का उपयोग करके AJAX फ़ॉर्म की सामग्री को प्रतिस्थापित करने के लिए ईवेंट को इन बटनों से जोड़ना पड़ता था। पूर्ण कोड उस रूप reparses और रद्द बटन को घटना देता है:

$(document).ajaxSuccess(function (event, xhr, settings) { 
    var $jQval = $.validator, adapters, data_validation = "unobtrusiveValidation"; 
    $jQval.unobtrusive.parse(document); 
    $(".jsCancel").click(function (e) { 
     $(e.currentTarget).closest("form").validate().settings.ignore = "*" 
    }); 
}); 
+0

धन्यवाद: <input type="submit" value="Cancel" name="Cancel" class="cancel" />

निम्नलिखित कोड में बाकी का काम jquery.validate। सामग्री उत्पन्न होने पर मैंने अपने बटन पर "रद्द करें" कक्षा जोड़कर इस समस्या को हल किया है। मेरे पास आपके लिए सवाल है इस चयनकर्ता का अर्थ क्या है ".jsCancel"? और क्या आपने इस $ ("। JsCancel") का उपयोग करने का प्रयास किया। लाइव ("क्लिक करें", ... इसके बजाय यह $ ("। JsCancel")। क्लिक करें (फ़ंक्शन (ई) ... – Sergii

+0

रद्द कक्षा को जोड़ना नहीं था मेरे लिए काम करें, इसलिए मेरा काम-आसपास। हम आमतौर पर जेएस के साथ सीएसएस कक्षाओं को उपसर्ग करते हैं, अगर उन्हें स्टाइल के बजाय तत्व ढूंढने के लिए उपयोग किया जाता है। मैंने उस वर्ग को मेरे सबमिट-बटन पर रखा है जो फ़ॉर्म को मान्य नहीं करना चाहिए। मुझे लगता है कि लाइव () या चालू() भी काम करेगा, मैं बस इसका उपयोग करने के लिए उपयोग नहीं किया जाता है। – Skymt

1

यह वास्तव में tugberk से जवाब देने के लिए एक टिप्पणी है, लेकिन टिप्पणी कोड उदाहरणों से पता चलता नहीं है बहुत अच्छी तरह से।

कुछ ब्राउज़र संस्करणों को "preventDefault()" फ़ंक्शन पसंद नहीं है।

//Function to prevent Default Events 
function preventDefaultEvents(e) 
{ 
    if (e.preventDefault) { 
     e.preventDefault(); 
    } else { 
     e.returnValue = false; 
    } 
} 

आप "preventDefault" के स्थान पर इसे कहते इस तरह::

$("#CancelButton").on("click", function(event) { 
    preventDefaultEvents(event); 
    return false; 
}); 
1

आप उपयोग कर सकते हैं सीएसएस वर्ग "अभी नहीं" इस कई बार ने काट लिया के बाद, मैं एक साधारण उपयोगिता समारोह जोड़ा । पूर्व:

// allow suppresing validation by adding a cancel class to the submit button 
this.find("input, button").filter(".cancel").click(function() { 
    validator.cancelSubmit = true; 
}); 
संबंधित मुद्दे