JQuery के सत्यापन के साथ सत्यापन को मैन्युअल रूप से कैसे ट्रिगर किया जाए?


143

मैं jQuery Validate के साथ त्रुटि संदेश दिखाने सहित मैन्युअल रूप से सत्यापन को ट्रिगर करना चाहता हूं ।

जिस परिदृश्य को मैं पूरा करने की कोशिश कर रहा हूं वह इस तरह का एक रूप है:

<form>
 <input id=i1> <button id=b1>
 <input id=i2> <button id=b2>
</form>

क्लिक करते समय b1, केवल i1मान्य होना चाहिए। मुर्गी क्लिक करना b2, केवल i2मान्य होना चाहिए। हालाँकि सभी फ़ील्ड पोस्ट किए जाने चाहिए। मैं यह कैसे कर सकता हूँ? मैंने b1/b2फॉर्म के एक हिस्से को मान्य करने के लिए क्लिक इवेंट को संभालने के बारे में सोचा था ।


इसे मैन्युअल रूप से मान्य क्यों नहीं किया गया? यह प्लगइन पूरे फॉर्म को मान्य करने के लिए बहुत उपयोगी है, लेकिन इस मामले में मैन्युअल रूप से अधिक सस्पेक्टेबल वेरिफाइड फॉर्म है।
अनातोली

मेरे उदाहरण में रूप बड़ा है। मैं इसे स्वचालित चाहता हूं।
usr

जवाबों:


176

ऐसा लगता है कि पुस्तकालय एकल तत्वों के लिए सत्यापन की अनुमति देता है। बस अपने ईवेंट को एक बटन पर क्लिक करें और निम्न प्रयास करें:

$("#myform").validate().element("#i1");

यहाँ उदाहरण:

https://jqueryvalidation.org/Validator.element


15
यह संपूर्ण फ़ॉर्म को मान्य करता है ... केवल 1 फ़ील्ड को मान्य करने के लिए, सही तरीका यह है: stackoverflow.com/a/12195091/114029
लेनियल मैककैफ़री

जिस कारण से मुझे इस तरह से मान्य होने पर कस्टम त्रुटि पाठ नहीं मिलता है। इस तथ्य से मुझे कुछ लेना-देना है कि मैं डुरंडल संवाद के अंदर चल रहा हूं। कहा संदर्भ में इस ढांचे के साथ मुद्दों के टन होने।
पी। ब्रायन। मैके

@ रॉबर्टो एलोइ: लिंक पदावनत है
सेबस्टियन

@Sebastian पिंग के लिए धन्यवाद, अब लिंक अपडेट किया गया!
रॉबर्टो एलोई

113

या एक बस का उपयोग कर सकते हैं: $('#myElem').valid()

if ($('#myElem').valid()){
   // will also trigger unobtrusive validation only for this element if in place 
   // add your extra logic here to execute only when element is valid
}

ध्यान दें कि validate()इस पद्धति का उपयोग करके इसे जांचने से पहले फॉर्म पर बुलाया जाना चाहिए।

दस्तावेज़ लिंक: https://jqueryvalidation.org/valid/


15
validate()इस पद्धति का उपयोग करके इसे जांचने से पहले फॉर्म पर बुलाया जाना चाहिए।
getah

मेरे पास इस तरह क्वेरी है (यदि ($ (# # myElem ')। val () ==' 2017-4-12 ') {दिनांक चयन गलत} है, तो {वैध चयन}
श्रीनिवास गौड़ा

29

मेरा दृष्टिकोण नीचे था। अब मैं बस यही चाहता था कि एक विशिष्ट चेकबॉक्स को क्लिक / परिवर्तित करने के बाद मेरा फ़ॉर्म मान्य किया जाए:

$('#myForm input:checkbox[name=yourChkBxName]').click(
 function(e){
  $("#myForm").valid();
}
)

मेरी क्वेरी यदि ($ ('# someID) ===' 2017-4-12) {$ ("# सुधार")। मान्य करें ()। तत्व ("# i1")। मान्य ();} और {{$ "#Yform")। मान्य करें ()। तत्व ("# i1")। अमान्य ();} कोड सही है
श्रीनिवास गौड़ा

14

जैसा कि दस्तावेज में लिखा गया है , प्रोग्राम सत्यापन को औपचारिक रूप से ट्रिगर करने का तरीका है कि वैधीटर को सुधारना है।

var validator = $( "#myform" ).validate();
validator.form();

2
यह सवाल का जवाब नहीं देता है, क्योंकि सवाल केवल एक विशिष्ट क्षेत्र को मान्य करने के बारे में है। लेकिन यह वही है जिसकी मुझे तलाश थी। धन्यवाद!
jlh

4

संस्करण 1.14 के रूप में एक अनैच्छिक विधि है

validator.checkForm()

यह विधि चुपचाप सही / गलत के लिए मान्य है। यह त्रुटि संदेशों को ट्रिगर नहीं करता है।


9
अनिच्छुक = किसी भी समय टूट सकता है।
usr

2

ऊपर से ईवा एम, लगभग उत्तर के रूप में ऊपर पोस्ट किया गया था (धन्यवाद ईवा एम!):

var validator = $( "#myform" ).validate();
validator.form();

यह लगभग उत्तर है, लेकिन यह समस्याओं का कारण बनता है, यहां तक ​​कि सबसे अधिक 13 डीईसी 2018 के रूप में jquery सत्यापन प्लगइन तक। समस्या यह है कि यदि कोई सीधे उस नमूने की प्रतिलिपि बनाता है, और कभी भी ".validate" () को एक से अधिक बार कॉल करता है। सत्यापन का फोकस / कुंजी प्रसंस्करण टूट सकता है, और सत्यापन ठीक से त्रुटियों को नहीं दिखा सकता है।

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

1) अपने वैरिएबल को एक वैरिएबल / ग्लोबल में सेव करें।

var oValidator = $("#myform").validate();

2) कॉल न करें $ ("# सुधार")। सत्यापित करें () फिर से।

यदि आप $ ("# सुधार") कहते हैं। एक से अधिक बार मान्य करें (), यह फोकस / कुंजी / त्रुटि छिपाने वाले मुद्दों का कारण हो सकता है।

3) चर / वैश्विक और कॉल फॉर्म का उपयोग करें।

var bIsValid = oValidator.form();

1

इसी तरह के मामले में, मेरे पास अपना सत्यापन तर्क था और मैं संदेश दिखाने के लिए jQuery सत्यापन का उपयोग करना चाहता था। यही मैंने किया था।

//1) Enable jQuery validation
var validator = $('#myForm').validate();

$('#myButton').click(function(){
  //my own validation logic here
  //.....
  //2) when validation failed, show the error message manually
  validator.showErrors({
    'myField': 'my custom error message'
  });
});


0

मैंने कोशिश की कि यह tnx @Anastasiosyal काम करता है मैं इसे इस धागे पर साझा करना चाहता हूं।

मैं सकारात्मक नहीं हूँ कि जब मैंने खेतों को खाली किया तो इनपुट फ़ील्ड कैसे ट्रिगर नहीं हुए। लेकिन मैं प्रत्येक आवश्यक फ़ील्ड को व्यक्तिगत रूप से उपयोग करके ट्रिगर करने में कामयाब रहा:

$(".setting-p input").bind("change", function () {
        //Seven.NetOps.validateSettings(Seven.NetOps.saveSettings);
        /*$.validator.unobtrusive.parse($('#saveForm'));*/
        $('#NodeZoomLevel').valid();
        $('#ZoomLevel').valid();
        $('#CenterLatitude').valid();
        $('#CenterLongitude').valid();
        $('#NodeIconSize').valid();
        $('#SaveDashboard').valid();
        $('#AutoRefresh').valid();
    });

यहाँ मेरा विचार है

@using (Html.BeginForm("SaveSettings", "Settings", FormMethod.Post, new {id = "saveForm"}))
{
    <div id="sevenRightBody">
        <div id="mapMenuitemPanel" class="setingsPanelStyle" style="display: block;">
            <div class="defaultpanelTitleStyle">Map Settings</div>
            Customize the map view upon initial navigation to the map view page.
            <p class="setting-p">@Html.LabelFor(x => x.NodeZoomLevel)</p>
            <p class="setting-p">@Html.EditorFor(x => x.NodeZoomLevel) @Html.ValidationMessageFor(x => x.NodeZoomLevel)</p>
            <p class="setting-p">@Html.LabelFor(x => x.ZoomLevel)</p>
            <p class="setting-p">@Html.EditorFor(x => x.ZoomLevel) @Html.ValidationMessageFor(x => x.ZoomLevel)</p>
            <p class="setting-p">@Html.LabelFor(x => x.CenterLatitude)</p>
            <p class="setting-p">@Html.EditorFor(x => x.CenterLatitude) @Html.ValidationMessageFor(x => x.CenterLatitude)</p>
            <p class="setting-p">@Html.LabelFor(x => x.CenterLongitude)</p>
            <p class="setting-p">@Html.EditorFor(x => x.CenterLongitude) @Html.ValidationMessageFor(x => x.CenterLongitude)</p>
            <p class="setting-p">@Html.LabelFor(x => x.NodeIconSize)</p>
            <p class="setting-p">@Html.SliderSelectFor(x => x.NodeIconSize) @Html.ValidationMessageFor(x => x.NodeIconSize)</p>
        </div>

और मेरी इकाई

   public class UserSetting : IEquatable<UserSetting>
    {
        [Required(ErrorMessage = "Missing Node Zoom Level.")]
        [Range(200, 10000000, ErrorMessage = "Node Zoom Level must be between {1} and {2}.")]
        [DefaultValue(100000)]
        [Display(Name = "Node Zoom Level")]
        public double NodeZoomLevel { get; set; }

        [Required(ErrorMessage = "Missing Zoom Level.")]
        [Range(200, 10000000, ErrorMessage = "Zoom Level must be between {1} and {2}.")]
        [DefaultValue(1000000)]
        [Display(Name = "Zoom Level")]
        public double ZoomLevel { get; set; }

        [Range(-90, 90, ErrorMessage = "Latitude degrees must be between {1} and {2}.")]
        [Required(ErrorMessage = "Missing Latitude.")]
        [DefaultValue(-200)]
        [Display(Name = "Latitude")]
        public double CenterLatitude { get; set; }

        [Range(-180, 180, ErrorMessage = "Longitude degrees must be between {1} and {2}.")]
        [Required(ErrorMessage = "Missing Longitude.")]
        [DefaultValue(-200)]
        [Display(Name = "Longitude")]
        public double CenterLongitude { get; set; }

        [Display(Name = "Save Dashboard")]
        public bool SaveDashboard { get; set; }
.....
}

3
जब यह प्रश्न स्पष्ट रूप से jQuery सत्यापन की चिंता करता है तो यह जवाब .Net पर्यावरण को मानता है।
केनगू लाबज

0

एक अच्छा तरीका है अगर आप validate()किसी फॉर्म पर मापदंडों का उपयोग करते हैं और अपने फॉर्म के एक क्षेत्र को बाद में मैन्युअल रूप से मान्य करना चाहते हैं:

var validationManager = $('.myForm').validate(myParameters);
...
validationManager.element($(this));

दस्तावेज़ीकरण: मान्यकर्ता। पोस्टल ()

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.