2011-03-30 13 views
31

MVC 3 में डिफ़ॉल्ट सत्यापन jQuery Validation है, जो मैं आमतौर पर की तरह कुछ के साथ अनुकूलित कर सकते हैं पर आधारित है:मैं अपनी शैली से मेल खाने के लिए एएसपी.नेट एमवीसी 3 में अविभाज्य सत्यापन कैसे अनुकूलित कर सकता हूं?

$.validator.setDefaults({ 
    submitHandler: function() { alert('submitHandler'); }, 
    errorPlacement: function(error, element) { 
    // do something important here 
    alert('errorPlacement'); 
    }, 
    errorClass: "error", 
    errorElement: "input", 
    onkeyup: false, 
    onclick: false 
}) 

लेकिन, कि MVC 3. विशेष रूप में काम करने के लिए नहीं लगता है, errorPlacement कभी नहीं लगता है बुलाया जाना चाहिए और मुझे नहीं पता कि क्यों। मुझे सबमिट होगाडलर कहा जाता है, लेकिन त्रुटि प्लेसमेंट नहीं।

मैं अपनी साइट की शैली के लिए आवश्यक संरचना/शैली से मेल खाने के लिए सत्यापन को कैसे अनुकूलित कर सकता हूं? डिफ़ॉल्ट बहुत अच्छा है, लेकिन यह हमेशा हर स्थिति में काम नहीं करता है।

उत्तर

44

$.validator.setDefaults का उपयोग करने के बजाय मेरे कोड में मैं $("#form_selector").data('validator') का उपयोग कर फॉर्म सत्यापनकर्ता तक पहुंचता हूं और फिर सेटिंग बदलता हूं।

$(function() { 

    var validator = $("#form_selector").data('validator'); 
    validator.settings.errorPlacement = function(error,element) { 
     alert('errorPlacement'); 
    }; 

}); 

देखें कि क्या यह आप के लिए काम करता है।

+3

अच्छा काम किया, धन्यवाद!मेरे बालों को खींचने के लिए यह पता लगाने की कोशिश कर रहा था कि क्यों वैधता के एमवीसी 3 संस्करण सामान्य jquery सत्यापन की तरह अनुकूलन को समझ में नहीं आता है। – akiro

+0

यह काम करता है, सिवाय इसके कि मुझे त्रुटि क्लास, त्रुटि एलीमेंट इत्यादि जैसी चीजों को सेट करने की भी आवश्यकता है। क्या कोई सुझाव है? – Kori

+7

आप कहां से कॉल करते हैं ("# form_selector")। डेटा ('validator') ?? जब मैं ऐसा करता हूं तो कोई संपत्ति वापस नहीं आती है। – nixon

39

मैं एक ही मुद्दा था, लेकिन महसूस किया कि विनीत प्लगइन वास्तव में मुद्दा casuing था, यह किसी भी विकल्प आप सेट को पार कर जाएगी!

  1. सत्यापित करें प्लगइन
  2. आपका कस्टम कोड & विकल्पों
  3. विनीत प्लगइन

किसी भी अन्य आदेश और इस: चाल अपने कोड लिखा है करने के लिए/शामिल निम्न क्रम में है सही ढंग से सेट नहीं किया जाएगा!

+3

धन्यवाद। अब तक का सबसे आसान और सबसे सुरुचिपूर्ण समाधान। – Mark

+3

http://aspnet.uservoice.com/forums/41201-asp-net-mvc/suggestions/3583148-update-jquery- validate-unobtrusive-implementation- –

+6

मेरी इच्छा है कि मैं इसे लगभग 20 बार बढ़ा सकता हूं। –

-3

मैंने इसके लिए केवल उन तत्वों के मिलान के लिए अपनी शैली को डुप्लिकेट किया जो अविभाज्य सत्यापनकर्ता कहते हैं।

@Html.ValidationMessageFor(x => x.EmailAddress, "", new { @class = "field-error" }) 

जब सत्यापन त्रुटि होती है तो "सत्यापन प्रमाणीकरण" एक वर्ग "फील्ड-सत्यापन-त्रुटि" को नीचे जैसा जोड़ता है।

<span class="field-error field-validation-error" data-valmsg-for="EmailAddress" data-valmsg-replace="true"><span for="EmailAddress" generated="true" class="">Email address is Required.</span></span> 

तो मैं जैसे

.field-error.***field-validation-error*** {position:relative;color:#fff;background:#589BC9;} 

मुझे लगा कि यह इसे ठीक करने का आसान तरीका है मेरी शैली दोहराया।

4

यह करने के लिए सही रास्ता:

स्क्रिप्ट आदेश:

  1. सत्यापित करें प्लगइन
  2. विनीत प्लगइन
  3. आपका कस्टम कोड & विकल्पों

Cus टॉम कोड & विकल्प स्क्रिप्ट:

var settings = { 
    //... 
}; 

// override jQuery unobtrusive validator settings 
$.validator.unobtrusive.options = settings; 
+0

धन्यवाद! दरअसल, यह करने का यह सही तरीका है, जब आपको ** इन सेटिंग्स को ** ओवरराइट करने की आवश्यकता होती है: 'errorClass', 'errorElement' और ** ** ** इन कार्यों को विस्तारित करना चाहते हैं:' errorPlacement', 'invalidHandler' और' success'। अन्य सभी विकल्पों के लिए आपको @ChrisBarr द्वारा प्रस्तुत समाधान का उपयोग करना चाहिए – ctekse

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