আমি কিছু ফর্মটি বৈধতা দেওয়ার জন্য চমৎকার jQuery বৈধতা প্লাগিন ব্যবহার করছি । একটি ফর্মের মধ্যে, আমাকে নিশ্চিত করতে হবে যে ব্যবহারকারী কমপক্ষে একটি ক্ষেত্রে ক্ষেত্রের একটির মধ্যে ফিল্ড করে। আমি মনে করি আমি একটি খুব ভাল সমাধান পেয়েছি, এবং এটি ভাগ করতে চেয়েছিলেন। আপনি যে কোনও উন্নতি ভাবতে পারেন তা দয়া করে পরামর্শ দিন।
এটি করার জন্য কোনও অন্তর্নিহিত উপায় খুঁজে না পেয়ে, আমি অনুসন্ধান করেছি এবং রেবেকা মারফির কাস্টম বৈধকরণ পদ্ধতিটি পেয়েছি , যা খুব সহায়ক ছিল।
আমি এটি তিনটি উপায়ে উন্নত করেছি:
- আপনাকে ক্ষেত্রগুলির গ্রুপের জন্য একটি নির্বাচক পাস করতে দিন
- বৈধতা পাস করার জন্য আপনাকে অবশ্যই সেই গোষ্ঠীর কতটি পূরণ করতে হবে তা নির্দিষ্ট করতে
- গ্রুপের সমস্ত ইনপুটগুলি বৈধতা পাস করার সাথে সাথে তাদের মধ্যে কোনও বৈধতা পাস করার জন্য দেখানো। ( নিক ক্র্যাভারের শেষে চেঁচামেচি দেখুন ))
সুতরাং আপনি বলতে পারেন "কমপক্ষে এক্স ইনপুটগুলি যা ম্যাচ নির্বাচক ওয়াইয়ের সাথে পূরণ করতে হবে" "
এর মতো মার্কআপ সহ শেষ ফলাফল:
<input class="productinfo" name="partnumber">
<input class="productinfo" name="description">
... এই জাতীয় নিয়মের একটি গ্রুপ:
// Both these inputs input will validate if
// at least 1 input with class 'productinfo' is filled
partnumber: {
require_from_group: [1,".productinfo"]
}
description: {
require_from_group: [1,".productinfo"]
}
আইটেম # 3 ধরে নেওয়া হয়েছে যে আপনি .checked
সফলতা যাচাইয়ের পরে আপনার ত্রুটি বার্তাগুলিতে একটি শ্রেণি যুক্ত করছেন । আপনি এখানে নিম্নলিখিত হিসাবে এটি নিম্নলিখিত হিসাবে এটি করতে পারেন ।
success: function(label) {
label.html(" ").addClass("checked");
}
উপরে লিঙ্কযুক্ত ডেমো হিসাবে, আমি প্রতিটি দিতে সিএসএস ব্যবহার করি span.error
এক্স চিত্রকে ব্যাকগ্রাউন্ড হিসাবে , যদি না এটির ক্লাস না থাকে.checked
চেক চিহ্নের চিত্র পায় gets
এখন পর্যন্ত আমার কোডটি এখানে:
jQuery.validator.addMethod("require_from_group", function(value, element, options) {
var numberRequired = options[0];
var selector = options[1];
//Look for our selector within the parent form
var validOrNot = $(selector, element.form).filter(function() {
// Each field is kept if it has a value
return $(this).val();
// Set to true if there are enough, else to false
}).length >= numberRequired;
// The elegent part - this element needs to check the others that match the
// selector, but we don't want to set off a feedback loop where each element
// has to check each other element. It would be like:
// Element 1: "I might be valid if you're valid. Are you?"
// Element 2: "Let's see. I might be valid if YOU'RE valid. Are you?"
// Element 1: "Let's see. I might be valid if YOU'RE valid. Are you?"
// ...etc, until we get a "too much recursion" error.
//
// So instead we
// 1) Flag all matching elements as 'currently being validated'
// using jQuery's .data()
// 2) Re-run validation on each of them. Since the others are now
// flagged as being in the process, they will skip this section,
// and therefore won't turn around and validate everything else
// 3) Once that's done, we remove the 'currently being validated' flag
// from all the elements
if(!$(element).data('being_validated')) {
var fields = $(selector, element.form);
fields.data('being_validated', true);
// .valid() means "validate using all applicable rules" (which
// includes this one)
fields.valid();
fields.data('being_validated', false);
}
return validOrNot;
// {0} below is the 0th item in the options field
}, jQuery.format("Please fill out at least {0} of these fields."));
হুররে!
চিৎকার কর
এখন আর্তচিৎকারের জন্য - মূলত, আমার কোডটি ত্রুটি বার্তাগুলি অন্ধভাবে অন্য ম্যাচের ক্ষেত্রগুলিতে পুনরায় যাচাইয়ের পরিবর্তে লুকিয়ে রেখেছে, যার অর্থ যদি অন্য কোনও সমস্যা হয় (যেমন 'কেবল সংখ্যাগুলি অনুমোদিত এবং আপনি চিঠিগুলি প্রবেশ করেছিলেন') , ব্যবহারকারী জমা দেওয়ার চেষ্টা না করা পর্যন্ত এটি লুকানো ছিল। এটি কারণ আমি উপরের মন্তব্যে উল্লিখিত প্রতিক্রিয়া লুপটি এড়াতে জানি না। আমি জানতাম একটি উপায় অবশ্যই আছে, তাই আমি একটি প্রশ্ন জিজ্ঞাসা করেছি এবং নিক ক্র্যাভার আমাকে আলোকিত করেছিলেন। ধন্যবাদ, নিক!
প্রশ্ন সমাধান
এটি মূলত একটি ছিল "আমাকে এটিকে ভাগ করে দিন এবং কেউ যদি উন্নতির পরামর্শ দিতে পারে কিনা" এই জাতীয় প্রশ্ন। আমি এখনও প্রতিক্রিয়া স্বাগত জানাতে চাই, আমি মনে করি এটি এই মুহুর্তে বেশ সম্পূর্ণ। (এটি সংক্ষিপ্ত হতে পারে, তবে আমি এটি পড়তে সহজ হওয়া এবং অগত্যা সংক্ষিপ্ত আকারে এটি চাই না)) সুতরাং কেবল উপভোগ করুন!
আপডেট - এখন jQuery বৈধকরণ অংশ
এটি 4/3/2012 তে আনুষ্ঠানিকভাবে jQuery বৈধকরণে যুক্ত হয়েছিল।