9

मैंने RequiredAttribute से विरासत में और IClientValidatable को लागू करके क्लाइंट और सर्वर दोनों पर अपने एमवीसी मॉडल को सत्यापित करने के लिए अपनी सशर्त सत्यापन विशेषता बनाई है। विचार यह है कि अगर मेरे मॉडल पर एक बुलियन संपत्ति सच है, तो दूसरी संपत्ति की आवश्यकता है। ध्यान में रखते हुए इस एक चेकबॉक्स जो यह नियत एक पाठ बॉक्स में भरे जाने की जरूरत है कि क्या रूप में प्रकट होताअविभाज्य jQuery सत्यापन का उपयोग करके सत्यापन को मैन्युअल रूप से पुन: सत्यापित/ट्रिगर कैसे करें?

यह जब उपयोगकर्ता निम्न कार्य करता है के लिए छोड़कर सही काम करता है:।

  • चेकों चेकबॉक्स (क्षेत्र है अब आवश्यक)।
  • फॉर्म सबमिट करता है (क्लाइंट साइड सत्यापन रन, त्रुटि संदेश प्रदर्शित)।
  • उपयोगकर्ता अनचेक बॉक्स (त्रुटि संदेश बनी हुई है, फ़ील्ड अब आवश्यक नहीं है)।

जब मैं चेकबॉक्स चेक या अनचेक करता हूं तो फॉर्म को पुन: सत्यापित करना चाहता हूं, या उस क्षेत्र को फिर से संशोधित करने के लिए बेहतर है, ताकि त्रुटि संदेश अब प्रदर्शित न हो। मैंने jQuery validate() विधि को कॉल करने के विभिन्न संयोजनों का प्रयास किया है, लेकिन कुछ भी सत्यापन को फिर से चलाने में सक्षम नहीं लगता है।

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

$.validator.addMethod(
    "requiredif", 
    function(value, element, parameters) { 
     var selector = "#" + parameters["dependentpropertyname"]; 
     var triggerValue = parameters["triggervalue"].toString().toLowerCase(); 
     var actualValue = $(selector).is(":checked").toString().toLowerCase(); 
     if (actualValue === triggerValue) return $.validator.methods.required.call(this, value, element, parameters); 

     return true; 
    }); 

$.validator.unobtrusive.adapters.add(
    "requiredif", 
    ["dependentpropertyname", "triggervalue"], 
    function(options) { 
     options.rules["requiredif"] = { 
      dependentpropertyname: options.params["dependentpropertyname"], 
      triggervalue: options.params["triggervalue"] 
     }; 
     options.messages["requiredif"] = options.message; 
    } 
); 

धन्यवाद!

उत्तर

-4

आपको Foolproof Validation देखें। यह वही करता है जो आप अपना खुद का रोल करने के बिना करने की कोशिश कर रहे हैं।

+0

यह शानदार लग रहा है! लिंक के लिए धन्यवाद, लेकिन मुझे अभी भी एक ही समस्या है। अर्थात। मेरे फॉर्म के सभी या हिस्से के लिए क्लाइंट पर प्रमाणीकरण को पुन: वैध/ट्रिगर कैसे करें? – andrej351

+2

यह सवाल का जवाब नहीं देता है। ओपी ने पूछा है कि कैसे छीलने के लिए और नारंगी और आपने जवाब दिया है कि आपको इसके बजाय एक सेब खाना चाहिए। संभवतः एक टिप्पणी हो सकती है। – Liam

13

मुझे एक ऐसी ही समस्या थी जहां मैं jquery validate और jquery ui का उपयोग करके डेटपिकर फ़ील्ड को पुन: सत्यापित करना चाहता था। This post ने मुझे इसे समझने में मदद की।

कुंजी, उस चयनकर्ता के लिए वैध विधि में केवल कॉलबैक जोड़ें। कुछ ऐसा:

$(".requiredif").change(function() { 
    $(this).valid(); 
}) 
संबंधित मुद्दे