एक सत्यापन पुस्तकालय लिखने का प्रयास करें लेकिन कहीं पर अटक गया। केवल एक बार अलर्ट कैसे करें, हालांकि वे 2 सत्यापन परत हैं?
var validation_event = {
mandatory: function(that) {
if (!$(that).val() && $(that).data('placeholder')) {
alert('Please fill in ' + $(that).data('placeholder') + '.');
return false;
}
},
email: function(that) {
var regex = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
if ($(that).val() == '' || !regex.test($(that).val())) {
alert('Please make sure the ' + $(that).data('placeholder') + ' is valid.');
return false;
}
}
}
https://jsfiddle.net/wvzbq9h2/
सबमिट पर क्लिक करने का प्रयास करें, आप देखेंगे कि 2 अलर्ट हैं। इसके अलावा चीजें ठीक काम कर रही हैं।
3 जवाब
@XzenTorXz की बेला सही उत्तर है यानी https://jsfiddle.net/wvzbq9h2/3/
आपकी गलती यह है कि आपका सत्यापन अलर्ट के बाद झूठी वापसी कर रहा है, लेकिन आप कभी भी उस मान का उपयोग $.each
को रोकने के लिए नहीं करते हैं। आपको पहले अलर्ट के बाद $.each
को रोकना होगा।
$(function() {
var options = ['mandatory', 'email'];
var validation_event = {
mandatory: function(that) {
if (!$(that).val() && $(that).data('placeholder')) {
alert('Please fill in ' + $(that).data('placeholder') + '.');
that.stopPropagation();
}
},
email: function(that) {
var regex = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
if ($(that).val() == '' || !regex.test($(that).val())) {
alert('Please make sure the ' + $(that).data('placeholder') + ' is valid.');
that.stopPropagation();
}
}
}
यदि आप एक ही संदेश रखना चाहते हैं:
आप $.each
से बाहर निकलने के लिए return false
का उपयोग कर सकते हैं। आपको एक सफल सत्यापन पर भी सही लौटना होगा: https://jsfiddle.net/wvzbq9h2/4/
यदि आप एकाधिक संदेश दिखाना चाहते हैं (यदि एकाधिक सत्यापन विफल हो जाते हैं) तो आपको अपने संदेशों को एकत्रित करना होगा (उन्हें सत्यापन से वापस करना) और उन्हें समाप्त होने पर सतर्क करना होगा। देखें https://jsfiddle.net/wvzbq9h2/6/। आप 2 को भी जोड़ सकते हैं ताकि आपके पास प्रति फ़ील्ड केवल 1 संदेश हो, देखें: https://jsfiddle.net/ wvzbq9h2/7/
return false
का उपयोग कर सकते हैं jsfiddle.net/wvzbq9h2/ देखें। 3