कैसे जांचें कि कोई फॉर्म jQuery मान्यकरण प्लगइन का उपयोग करके प्रोग्रामेटिक रूप से मान्य है या नहीं


93

मेरे पास बटन के एक जोड़े के साथ एक फॉर्म है और मैं http://jquery.bassistance.de/validate/ से jQuery Validation Plugin का उपयोग कर रहा हूं । मैं बस यह जानना चाहता हूं कि क्या कोई तरीका है जो मैं जांच सकता हूं कि क्या फॉर्म को मेरे जावास्क्रिप्ट कोड में कहीं से भी jquery सत्यापन प्लगइन द्वारा वैध स्थिति में माना जाता है।


2
HTML5 और वेनिला JS (नो jQuery) का उपयोग करने के इच्छुक लोगों के लिए: stackoverflow.com/questions/12470622/…
2540625

जवाबों:


142

.valid()JQuery मान्यकरण प्लगइन से उपयोग करें :

$("#form_id").valid();

जाँचता है कि क्या चयनित प्रपत्र मान्य है या सभी चयनित तत्व मान्य हैं या नहीं। इस विधि का उपयोग करने से पहले इसे सत्यापित करने के लिए फॉर्म को सत्यापित करने की आवश्यकता है।

जहां के साथ फॉर्म id='form_id'एक ऐसा फॉर्म है जो पहले ही उस .validate()पर कॉल कर चुका है।


धन्यवाद, मैं पहले से ही कुछ कर रहा था जैसे: $ j ("# myform label.error")। प्रत्येक (फ़ंक्शन (i, e) {if ($ j (e) .css ('डिस्प्ले')! = 'कोई नहीं' ) {अस्तित्वमान = सत्य;}}); : एस
थैंक्स

@jaime: कोई समस्या नहीं, मदद करने के लिए खुश:)
एंड्रयू व्हाइटेकर

वास्तव में पहले फॉर्म पर चलने के लिए .validate () चलाने की कोई आवश्यकता नहीं है। आप बस कर सकते हैं यदि (form.valid ()) {} और वह काम करेगा, जहां 'फ़ॉर्म' वह फ़ॉर्म तत्व है जिसे आप लक्षित कर रहे हैं।
गारेथ डाइन

11
TypeError: $ ("# myForm")। मान्य () कोई फ़ंक्शन नहीं है।
Artgrohe

2
यदि आप TypeError valid() not a functionअपनी फ़ाइल में प्लगइन जोड़ रहे हैं, क्योंकि इसका प्लगइन jquery लाइब्रेरी उदा में शामिल नहीं है। <script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/jquery.validate.min.js"></script>
स्टैकएड

33

2015 का उत्तर: हमारे पास आधुनिक ब्राउज़रों में से यह बॉक्स है, बस jQuery से HTML5 CheckValidity API का उपयोग करें । मैंने ऐसा करने के लिए एक jquery-html5-वैधता मॉड्यूल भी बनाया है :

npm install jquery-html5-validity

फिर:

var $ = require('jquery')
require("jquery-html5-validity")($);

तो आप चला सकते हैं:

$('.some-class').isValid()

true

1
क्या हम इसे पूरे रूप में प्रत्येक तत्व पर नहीं कह सकते हैं?
parisssss

1
महान! बस मैं क्या देख रहा था
फस्टर

मैं validफ़ंक्शन के बजाय इसे पसंद करता हूं क्योंकि यह फ़ंक्शन को कॉल नहीं करता है validateऔर आपके फॉर्म को मान्य करता है।
केविनएडू

@parisssss अनुरोध के अनुसार कई चयनों पर करने के लिए एक मॉड्यूल बनाया।
मिक्मेकाना सेप

19

@mikemaccana उत्तर उपयोगी है।

और मैंने https://github.com/ryanseddon/H5F का भी उपयोग किया । Http://microjs.com पर मिला । यह किसी प्रकार की पॉलीफिल है और आप इसे निम्नानुसार उपयोग कर सकते हैं (उदाहरण में jQuery का उपयोग किया जाता है):

if ( $('form')[0].checkValidity() ) {
    // the form is valid
}

यह बेहतर है क्योंकि यह फॉर्म सत्यापन को ट्रिगर नहीं करता है
बिशो हैना

पैटर्न विशेषता के साथ काम करें। धन्यवाद।
एमजे वैकिली


4

iContribute: एक सही उत्तर के लिए कभी देर नहीं होती।

var form = $("form#myForm");
if($('form#myForm > :input[required]:visible').val() != ""){
  form.submit();
}else{
  console.log("Required field missing.");
}

इस तरह 'आवश्यक' फ़ील्ड के लिए मूल HTML5 सत्यापन फॉर्म के 'नाम' मानों का उपयोग करके मानक सबमिट के साथ हस्तक्षेप किए बिना होता है।


ध्यान दें, कि :inputऔर :visibleचयनकर्ताओं jQuery एक्सटेंशन और नहीं सीएसएस का हिस्सा हैं। डॉक्स
Geradlus_RU

3
पैटर्न से मेल खाने के कारण एक फॉर्म अमान्य भी हो सकता है और न केवल इसलिए क्योंकि गायब आवश्यक फ़ील्ड
फ्रैंक

4

आदानों के एक समूह के लिए आप @ mikemaccana के उत्तर के आधार पर एक बेहतर संस्करण का उपयोग कर सकते हैं

$.fn.isValid = function(){
    var validate = true;
    this.each(function(){
        if(this.checkValidity()==false){
            validate = false;
        }
    });
};

अब आप यह सत्यापित करने के लिए उपयोग कर सकते हैं कि क्या फॉर्म वैध है:

if(!$(".form-control").isValid){
    return;
}

आप सभी त्रुटि संदेशों को प्राप्त करने के लिए एक ही तकनीक का उपयोग कर सकते हैं:

$.fn.getVelidationMessage = function(){
    var message = "";
    var name = "";
    this.each(function(){
        if(this.checkValidity()==false){
            name = ($( "label[for=" + this.id + "] ").html() || this.placeholder || this.name || this.id);
            message = message + name +":"+ (this.validationMessage || 'Invalid value.')+"\n<br>";
        }
    })
    return message;
}

मैंने आपके लिए .each () करने के लिए jQuery प्लगइन बनाया है।
मिक्मेकाना

1

Magento के लिए, आप नीचे की तरह कुछ के द्वारा फॉर्म के सत्यापन की जांच करते हैं।

आप यह कोशिश कर सकते हैं:

require(["jquery"], function ($) {
    $(document).ready(function () {
        $('#my-button-name').click(function () { // The button type should be "button" and not submit
            if ($('#form-name').valid()) {
                alert("Validation pass");
                return false;
            }else{
                alert("Validation failed");
                return false;
            }
        });
    });
});

आशा है कि यह आपकी मदद कर सकता है!

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