jQuery বৈধতা - লুকানো ক্ষেত্রগুলির জন্য বৈধতা সক্ষম করুন


186

JQuery বৈধতা প্লাগইন এর নতুন সংস্করণে 1.9 লুকানো ক্ষেত্রগুলির ডিফল্ট বৈধতা উপেক্ষা করে । আমি টেক্সারিয়া ইনপুট ফিল্ডের জন্য সিকেইডিটার ব্যবহার করছি এবং এটি ক্ষেত্রটি লুকিয়ে রাখে এবং এটি আইফ্রেমে প্রতিস্থাপন করবে। ক্ষেত্রটি রয়েছে, তবে লুকানো ক্ষেত্রগুলির জন্য বৈধতা অক্ষম। বৈধতা প্লাগইন সংস্করণ 1.8.1 সহ সবকিছু প্রত্যাশার সাথে কাজ করে।

সুতরাং আমার প্রশ্নটি কীভাবে v1.9 বৈধতা প্লাগইন সহ লুকানো ক্ষেত্রগুলির জন্য বৈধতা সক্ষম করবেন।

এই সেটিংটি কাজ করে না:

$.validator.setDefaults({ ignore: '' });

1
আরও দেখুন stackoverflow.com/questions/7952181/...
goodeye

"লুকানো ক্ষেত্রগুলির বৈধতা উপেক্ষা করা" এর লিঙ্কটি মারা গেছে।
বিপাই

বৈধতা আমার সাথে ডিফল্টরূপে কাজ করছে <input type="text" name="myfield" id="myfield" required="required" style="display: none;">। আমাকে কোনও সেটিংস পরিবর্তন করতে বা বিশেষ কিছু করতে হয়নি।
স্কয়ারকাণ্ডি

উত্তর:


329

প্লাগইনটির লেখক বলেছেন আপনার "উদ্ধৃতি ব্যতীত স্কোয়ার বন্ধনী" ব্যবহার করা উচিত ,[]

http://bassistance.de/2011/10/07/release-validation-plugin-1-9-0/

প্রকাশ: বৈধতা প্লাগইন 1.9.0: "... অন্য পরিবর্তন লুকানো উপাদানগুলির সাথে ফর্মগুলির আরও সহজ করা উচিত, এগুলি এখন ডিফল্টরূপে উপেক্ষা করা হয় (বিকল্প" উপেক্ষা করুন "এখন" ডিফল্ট হিসাবে লুকানো "আছে theory) তত্ত্বের ক্ষেত্রে, এটি বিদ্যমান সেটআপটি ভেঙে ফেলতে পারে the সম্ভবত এটির অসম্ভব ক্ষেত্রে, আপনি উপেক্ষা-অপশনটি "[]" (কোট ছাড়াই বর্গাকার বন্ধনী) এ সেট করে এটি ঠিক করতে পারেন ""

সমস্ত ফর্মের জন্য এই সেটিংটি পরিবর্তন করতে:

$.validator.setDefaults({ 
    ignore: [],
    // any other default options and/or rules
});

(এটির .setDefaults()মধ্যে থাকা প্রয়োজন হয় নাdocument.ready ফাংশনের )

অথবা একটি নির্দিষ্ট ফর্মের জন্য:

$(document).ready(function() {

    $('#myform').validate({
        ignore: [],
        // any other options and/or rules
    });

});

সম্পাদনা :

কিছু লুকানো ক্ষেত্রগুলিতে বৈধতা কীভাবে সক্ষম করা যায় তার জন্য এই উত্তরটি দেখুন তবে এখনও অন্যদের উপেক্ষা করুন।


সম্পাদনা 2 :

"এটি কাজ করে না" মন্তব্য করার আগে , মনে রাখবেন যে ওপি সহজভাবে jQuery বৈধতা প্লাগইন সম্পর্কে জিজ্ঞাসা করছে এবং এএসপি. নেট, এমভিসি, বা অন্য কোনও মাইক্রোসফ্ট কাঠামো এই প্লাগইনটির স্বাভাবিক পরিবর্তন কীভাবে করতে পারে তার সাথে তার প্রশ্নের কোনও সম্পর্ক নেই has প্রত্যাশিত আচরণ. আপনি যদি কোনও মাইক্রোসফ্ট কাঠামো ব্যবহার করেন তবে jQuery বৈধতা প্লাগইনটির ডিফল্ট ক্রিয়াকলাপটি মাইক্রোসফ্ট দ্বারা অতিরিক্ত-লিখিতunobtrusive-validation

আপনি যদি unobtrusive-validationপ্লাগইন নিয়ে লড়াই করে চলেছেন তবে দয়া করে পরিবর্তে এই উত্তরটি দেখুন: https://stackoverflow.com/a/11053251/594235


26
হয়তো ডাউন-ভোটার আমাকে কিছু গঠনমূলক প্রতিক্রিয়া জানাতে পারেন। অন্যথায়, উত্তরটি সম্পূর্ণ স্ব-অন্তর্ভুক্ত, সঠিকভাবে উত্সযুক্ত, কোড উদাহরণ দেয় এবং প্লাগইনটির লেখক হিসাবে প্রযুক্তিগতভাবে সঠিক।
স্পার্কি

1
@ স্টিজনভ্যানবেল, না এটি মিথ্যা। দেখুন: jsfiddle.net/F4w92/1 এবং জেরিকের উত্তর সম্পর্কে আমার দ্বিতীয় মন্তব্যটি দেখুন ।
স্পার্কি

4
ভাল বলেছেন @ স্পার্কি। ডাউন-ভোট সম্ভবত প্রতিশোধের ধরণ, আমিও এরকম মুখোমুখি হয়েছি ..
ওমর

1
জেএসফিডাল আর কাজ করে না কারণ লাইব্রেরিগুলি এইচটিটিপিএসের পরিবর্তে এইচটিটিপিতে লোড হয়। আপডেট সংস্করণ: jsfiddle.net/F4w92/31
হিপস

1
সর্বশেষ সংস্করণটি ব্যবহার করে এটি আমার পক্ষে কাজ করে না বলে আমিও নিম্নোক্ত হয়েছি: ব্যবহার করতে হয়েছিল: $ ("ফর্ম") data তথ্য ("বৈধকরণকারী") settings সেটিংস.ইনোর = ""; @ জেমস বেলো থেকে অন্য উত্তর হিসাবে
মার্ক হোমার

71

এটি আমার জন্য কাজ করেছে, এমন একটি এএসপি.নেট এমভিসি 3 সাইটের মধ্যে যেখানে আমি অবাস্তব বৈধতা সেটআপ করার জন্য কাঠামোটি রেখে দিয়েছিলাম, যদি কারও পক্ষে এটি কার্যকর হয়:

$("form").data("validator").settings.ignore = "";

2
আমি এটিকেও পছন্দ করি কারণ এর অর্থ ডিফল্ট আচরণ পরিবর্তন না করে নির্দিষ্ট পরিস্থিতিতে আমি এটি করতে পারি।
স্টিভ ওভেন

5
আমাকে এইভাবে এটি করতে হয়েছিল, কারণ বিকল্পগুলি পরিবর্তন করতে। માન્ય () ব্যবহার করা কাজ করছে না।
ফারিনহা 13

1
এটি নিরঙ্কুশ বৈধতার জন্য সঠিক সমাধান, আমি অন্যান্য সমস্ত সমাধান চেষ্টা করেছিলাম, তারা যদি অবিরাম ব্যবহার না করে তবে তারা কাজ করতে পারে। আপনি যদি আপত্তিজনক ব্যবহার করছেন এখানে সঠিক জায়গা।
হাকান ফাস্টিক

বুটস্ট্র্যাপ অ্যাকর্ডিয়নের সাথে কাজ করার জন্য অবিচ্ছিন্ন বৈধতার জন্যও এই পদ্ধতিটি ব্যবহার করতে হয়েছিল
বিএসড_

আমি যখন এটিকে পরিবর্তন করি তখন ফর্মটি যাচাই হয় না। আমি
আপত্তিজনক।

64

লাগাতে ভুলবেন না

 $.validator.setDefaults({ ignore: '' });

ভিতরে না$(document).ready


2
দুর্দান্ত উত্তর। ডকুমেন্টেশনের একটি লিঙ্কটি লোকদের শেখার পক্ষে ভাল, তবে একটি সরাসরি উত্তর আরও মূল্যবান ইমো। তিনি ওপি সঠিক পথে ছিলেন, তবে এটিকে $ (ডকুমেন্ট) এর বাইরে রেখেছিলেন ready
কেভিন জাইচ

3
কেভিনজাইচ, স্পষ্টতই, এটি ডিওএম $.validator.setDefaults()প্রস্তুত হ্যান্ডারের ভিতরে বা বাইরে রাখা হয়েছে কিনা তা একেবারেই কোনও পার্থক্য করে না । এই জেএসফিডেলের সাথে এই জেএসফিডেলের তুলনা করুন ।
স্পার্কি

আকর্ষণীয় @ স্পার্কি, আপনার ফিডলগুলি দুর্দান্ত প্রমাণ। আমাকে এই সমাধানটি ব্যবহার করে ঠিক করা কোডটি ফিরে যেতে হবে এবং আমি কেন এই সিদ্ধান্তে এসেছি যে এটি ডিওএম প্রস্তুত হ্যান্ডলারের অভ্যন্তরে থাকতে হবে তা জানতে হবে। অন্য কোনও কারণ অবশ্যই থাকতে হবে।
কেভিন জাইচ

জাস্টিন ব্যাখ্যা করেছেন যে ডক তৈরির ভিতরে দৌড়ানো কেন সমস্যা তৈরি করে। তবে, এই উত্তরটি কোনও ভাল বিকল্প নয় কারণ গ্যারান্টি দেওয়া শক্ত যে, ডক প্রস্তুতের আগে বাইরের কিছু প্রস্তুত থাকবে। ডক.ডিডি এর বাইরে স্ক্রিপ্টগুলি চালানোর জন্য অপেক্ষা করবে না। ব্যক্তিগত কিছু নয়, তবে এটি একটি নির্ভরযোগ্য উত্তর নয়।
অ্যারোনএলএস

পরিশেষে আমার একটি উত্তর আছে .. আপনাকে অনেক ধন্যবাদ
sp9

29

সুতরাং আমি কেন এটি কাজ করে না তার সম্পর্কে আরও গভীর দিকে যাচ্ছি কারণ আমি এমন এক ব্যক্তি যিনি হা হা না জেনে রাতে ঘুমাতে পারেন না। আমি jQuery যাচাইকরণ 1.10 এবং মাইক্রোসফ্ট jQuery আনব্রুটসিভ বৈধতা 2.0.20710.0 ব্যবহার করছি যা 1/29/2013 এ প্রকাশিত হয়েছিল।

আমি jQuery যাচাইকরণে সেটডেফল্টস পদ্ধতিটি অনুসন্ধান করে শুরু করেছিলাম এবং এটি আনমিনাইড ফাইলের 261 লাইনে পেয়েছি। এই সমস্ত ফাংশনটি আসলে আপনার জসন সেটিংসকে বিদ্যমানতে মিশ্রিত করে$.validator.defaults যা উপেক্ষা করা সম্পত্তি ": গোপন" এ সেট করা হচ্ছে jQuery যাচাইকরণে সংজ্ঞায়িত অন্যান্য ডিফল্ট সহ initial সুতরাং এই সময়ে আমরা উপেক্ষা অগ্রাহ্য করেছি। এখন দেখা যাক এই ডিফল্ট সম্পত্তিটি কোথায় উল্লেখ করা হচ্ছে।

আমি কোডটি যখন সন্ধান করেছি তখন কোথায় $.validator.defaultsরেফারেন্স করা হচ্ছে তা দেখার জন্য। আমি লক্ষ্য করেছি যে কেবলমাত্র একটি ফর্ম বৈধকারীর জন্য কনস্ট্রাক্টর ব্যবহার করছেন, jQuery বৈধতা আনমিনিফাইড ফাইলে 170 লাইন।

// constructor for validator
$.validator = function( options, form ) {
    this.settings = $.extend( true, {}, $.validator.defaults, options );
    this.currentForm = form;
    this.init();
};

এই মুহুর্তে একটি বৈধকারক সেট করা যে কোনও ডিফল্ট সেটিংস মার্জ করে ফর্ম বৈধকারীর সাথে সংযুক্ত করে। আপনি যখন কোডটি যাচাইকরণ, হাইলাইটিং, আনহাইটলাইটিং ইত্যাদি করছেন তখন তারা যখন দেখেন তখন তারা উপেক্ষা সম্পত্তিটি টেনে আনার জন্য বৈধীকরণ.সেটিংস অবজেক্টটি ব্যবহার করে। সুতরাং আমাদের নিশ্চিত করতে হবে যে আমরা যদি সেটডেফাল্টস পদ্ধতিটি উপেক্ষা করে সেট করতে হয় তবে এটি $ ("ফর্ম") এর আগে উপস্থিত হতে হবে। বৈধতা () বলা হওয়ার আগে।

আপনি যদি Asp.net MVC এবং অব্যক্ত প্লাগইন ব্যবহার করছেন, তবে আপনি জাভাস্ক্রিপ্টটি দেখে যাচাই করতে পারবেন যা ডকুমেন্টে বলা হয়। আমি ডকুমেন্টে আমার সেটডাফল্টগুলিও ডেকেছি। প্রস্তুতি ব্লক যা স্ক্রিপ্টগুলির পরে কার্যকর হতে চলেছে, jquery যাচাইকরণ এবং আপত্তিজনক কারণ আমি এই স্ক্রিপ্টগুলিকে এইচটিএমএলটিতে কল করার আগে তার সংজ্ঞা দিয়েছি। সুতরাং বৈধতার সময় লুকানো উপাদানগুলি এড়িয়ে যাওয়ার ডিফল্ট কার্যকারিতাটিতে আমার কলটির স্পষ্টত কোনও প্রভাব ছিল না। এখানে বেশ কয়েকটি বিকল্প রয়েছে।

বিকল্প 1 - আপনি জুয়ান মেলাদোকে ডকুমেন্টের বাইরে কল থাকতে পারে বলে উল্লেখ করতে পারেন ready যা স্ক্রিপ্টটি লোড হওয়ার সাথে সাথেই কার্যকর হবে। আমি এটির সময় সম্পর্কে নিশ্চিত নই যেহেতু ব্রাউজারগুলি এখন সমান্তরাল স্ক্রিপ্ট লোড করতে সক্ষম। আমি যদি শুধু সতর্ক হয়ে থাকি তবে দয়া করে আমাকে সংশোধন করুন। এছাড়াও, এর আশেপাশে বিভিন্ন উপায় রয়েছে তবে আমার প্রয়োজনের জন্য আমি এই পথে নামিনি।

বিকল্প 2 এ - আমার দৃষ্টিতে নিরাপদ বাজি হ'ল $.validator.setDefaults({ ignore: '' });ডকুমেন্টের অভ্যন্তরটি কেবল প্রতিস্থাপন করা event এর সাথে ইভেন্টটি প্রস্তুত করুন $("form").data("validator").settings.ignore = "";। প্রদত্ত ফর্মের জন্য আপনার উপাদানগুলিতে প্রতিটি বৈধতা দেওয়ার সময় এটি jQuery যাচাইকরণের দ্বারা ব্যবহৃত উপেক্ষা করা সম্পত্তিটিকে পরিবর্তিত করবে।

বিকল্প 2 বি - কোডটিতে আরও কিছুক্ষন দেখার পরে আপনি $("form").validate().settings.ignore = "";উপেক্ষা সম্পত্তিটি সেট করার একটি উপায় হিসাবেও ব্যবহার করতে পারেন । কারণটি হ'ল বৈধতা ফাংশনটি দেখার সময় এটি পরীক্ষা করে দেখায় যে $.data()ফাংশনের মাধ্যমে কোনও বৈধীকরণ বস্তু ইতিমধ্যে ফর্ম উপাদানটির জন্য সংরক্ষণ করা হয়েছে । যদি এটি ফর্ম উপাদানটির সাথে সঞ্চিত কোনও বৈধীকরণ বস্তুটি খুঁজে পায় তবে এটি অন্য একটি তৈরি করার পরিবর্তে কেবল বৈধকরণকারী বস্তুটি ফেরত দেয়।


বিস্তারিত উত্তরের জন্য আপনাকে ধন্যবাদ!
ডেভিডলিউং

ওভি উত্তর আমার পক্ষে এমভিসি 5 তে কাজ না করায় ভাল কাজ
মার্ক হোমার

আপনার বিশ্লেষণ আমার বৈধতা সংক্রান্ত সমস্যার সমাধান করতে আমাকে অনেক সহায়তা করেছে। +1
pgcan

15

এটি আমার জন্য একটি এএসপি.নেট সাইটের মধ্যে কাজ করেছিল। কিছু লুকানো ক্ষেত্রে বৈধতা সক্ষম করতে এই কোডটি ব্যবহার করুন

$("form").data("validator").settings.ignore = ":hidden:not(#myitem)";

ফর্মের সমস্ত উপাদানগুলির জন্য বৈধতা সক্ষম করতে এটি ব্যবহার করুন $("form").data("validator").settings.ignore = "";

মনে রাখবেন যে এগুলির মধ্যে তাদের ব্যবহার করুন $(document).ready(function() { })


8

ignore: []সুনির্দিষ্ট ফর্মের জন্য সুনির্দিষ্ট পৃষ্ঠায় কেবল যুক্ত করা হয়েছে, এই সমাধানটি আমার পক্ষে কাজ করেছে।

$("#form_name").validate({
        ignore: [],
        onkeyup: false,
        rules: {            
        },      
        highlight:false,
    });


0

বৈধতা ফর্ম জমা দেওয়ার ক্ষেত্রে আমার পক্ষে কাজ করছিল, তবে এটি নির্বাচিত নির্বাচিত তালিকাগুলিতে ইনপুটটিতে প্রতিক্রিয়াশীল ইভেন্ট চালিত বৈধতাটি করছে না।

এটি সমাধানের জন্য আমি লাইব্রেরি দ্বারা যুক্ত হওয়া jquery বৈধতা ইভেন্টটি ম্যানুয়ালি ট্রিগার করতে নিম্নলিখিতগুলি যুক্ত করেছি:

$(".chosen-select").each(function() {
  $(this).chosen().on("change", function() {
    $(this).parents(".form-group").find("select.form-control").trigger("focusout.validate");
  });
});

jquery.માન્યate এখন .validঅন্তর্নিহিত নির্বাচন তালিকায় শ্রেণি যুক্ত করবে ।

ক্যাভেট: এটির জন্য আপনার ফর্ম ইনপুটগুলির জন্য একটি সামঞ্জস্যপূর্ণ html প্যাটার্ন প্রয়োজন। আমার ক্ষেত্রে ফাইল করা প্রতিটি ইনপুট একটিতে আবৃত থাকে div.form-groupএবং প্রতিটি ইনপুট থাকে .form-control


-15

কেবল আপনার jquery বৈধতা ফাইলটিতে পাঠ্যটি উপেক্ষা করুন: "লুকানো" এবং এটির মন্তব্য করুন comment মন্তব্য করার পরে এটি যাচাইকরণের জন্য কোনও লুকানো উপাদান হারাবে না ...

ধন্যবাদ


5
তৃতীয় পক্ষের লাইব্রেরিতে কোডটি এলোমেলোভাবে মন্তব্য করার জন্য কখনও ভাল ধারণা।
জ্যাক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.