আমি কি জাভাস্ক্রিপ্ট থেকে অবৈধ ক্ষেত্র চিহ্নিত করতে পারি?


94

পড়া থেকে এই পোস্টটি আমি খুঁজে পেয়েছি 'বৈধ' ও 'অবৈধ' ইনপুট HTML5 এর প্রচলন মানের জন্য কিছু ছদ্ম শ্রেণীর আছে।

জাভা স্ক্রিপ্ট থেকে আমি কোনও ইনপুট ক্ষেত্রটিকে অবৈধ / বৈধ হিসাবে চিহ্নিত করতে পারি? বা বিকল্পভাবে, আমি ব্যবহৃত বৈধতা পদ্ধতি ওভাররাইড করতে পারি?


আপনি একটি "অবৈধ" শ্রেণীর সাথে সর্বদা ডাবল আপ করতে পারতেন, তবে এটির চেয়ে আরও ভাল উপায় আছে তা শিখতে সত্যিই আকর্ষণীয় লাগবে।
পয়েন্টি

4
হ্যাঁ, অবশ্যই, তবে এটি বিরক্তিকর হবে;)
সুইভিশ

4
Svish, আপনি নীচের উত্তরগুলি পুনরায় মূল্যায়ন করতে পারেন? দেখে মনে হচ্ছে দাজাভ্যাক্স একটি উত্তর সরবরাহ করেছে যা আপনি যা চেয়েছিলেন ঠিক তেমন করে। এটি যদি দাজাভ্যাক্সের উত্তরকে গ্রহণযোগ্য হিসাবে চিহ্নিত করে থাকে তবে এটি অন্য দর্শকদের জন্য সহায়ক হতে পারে।
কোডস জনসন

@ কোডোস জনসন অবশ্যই, মাথা উঁচু করার জন্য ধন্যবাদ 🙂
সুইভিশ

উত্তর:


160

আপনি এই উদ্দেশ্যে কাস্টমভালিডিটি ফাংশনটি ব্যবহার করতে পারেন।

আপনি যদি ক্ষেত্রটিতে একটি কাস্টমভালিডিটি বার্তা যোগ করেন তবে এটি অবৈধ হয়ে যায়। আপনি বার্তাটি খালি স্ট্রিং হিসাবে সেট করলে, এটি আবার বৈধ হয়ে যায় (যদি না এটি অন্য কারণে অকার্যকর হয়)।

field.setCustomValidity("Invalid field."); ক্ষেত্রটিকে অবৈধ করে তুলবে।

field.setCustomValidity(""); ক্ষেত্রটি বৈধ করে তুলবে যদি না এটি কোনও HTML5 সীমাবদ্ধতা ব্যর্থ করে।


4
অসাধারণ. ধন্যবাদ. কোডেপেন.আইও
কেভিন

4
এছাড়াও, আপনি যদি ব্রাউজারের বৈধতা বার্তাটি প্রদর্শিত হতে চান inputবা blurআপনি ঠিক পরে ميدان.reportValidity () ব্যবহার করতে পারেন ।
স্যাম কার্লটন

4

সম্পাদনা : কেউ স্পষ্ট করে জানিয়েছে যে আপনি DOM এর জন্য "বৈধ" "অবৈধ" বৈশিষ্ট্য সন্ধান করছেন।

আমি প্রতিটি ট্যাগ ব্যবহার করে বৈশিষ্ট্য যুক্ত করব dom_object.setAttribute("isvalid", "true")। আপনার একটি কেন্দ্রীয় বৈধতা ফাংশনও থাকতে পারে যা প্রতিবার এই বৈশিষ্ট্যগুলিকে আপডেট করে (এবং dom_object.getAttribute("isvalid")প্রতিটি সময় ব্যবহার করুন )।

আপনি যখনই কোনও উপাদান ফোকাস হারিয়েছেন বা যখনই চান আপনি এই ফাংশনটি চালাতে পারেন।

ঠিক মার্জিত নয়, তবে দুর্ভাগ্যক্রমে জাভাস্ক্রিপ্ট এবং এইচটিএমএল 5 এর সাথে এখন কোনও "সিউডো" সমর্থন নেই support


যদি আমি আপনার প্রশ্নটি বুঝতে পারি তবে আপনি জাভাস্ক্রিপ্টের মাধ্যমে বৈধতা দিতে পারেন। তবে, সতর্কতা অবলম্বন করুন যে ক্লায়েন্টের পক্ষের বৈধতা, বিশেষত জাভাস্ক্রিপ্টের বৈধতা রোধ করা খুব সহজ । আপনার কখনই ক্লায়েন্টের ডেটাতে বিশ্বাস করা উচিত নয় এবং সর্বদা সার্ভারের পাশে পরীক্ষা করা উচিত।

উদাহরণস্বরূপ, উত্স কোডটি পরীক্ষা করে আমি সহজেই উপাদান আইডিগুলি সন্ধান document.getElementById('some_id').setAttribute('max', new_number)করতে পারি, তারপরে সর্বাধিক মানটি পরিবর্তন করতে পারি (এটি আপনার লিঙ্কের এন্ট্রিগুলির মধ্যে একটি ছিল)।

এটি করার বিভিন্ন উপায় রয়েছে, তাই আমি আপনাকে সাধারণ প্রতিমা দেওয়ার চেষ্টা করব।

আপনি এটি করে মূল্যটি দখল করতে পারেন document.getElementById('form_element_id').value( nameসার্ভারে প্রেরিত একটি ফর্মটি যা idজাভাস্ক্রিপ্ট দ্বারা ব্যবহৃত হয় তা নিশ্চিত করুন)। টেক্সারিয়াসের জন্য, আপনি ব্যবহার করতে পারেন .innerHTML

তারপরে আপনার ভেরিয়েবলের মান রয়েছে, এটি পরীক্ষা করার বিভিন্ন উপায় রয়েছে।

উদাহরণস্বরূপ, আপনি করতে পারেন if (parseInt(my_value) < 0) //error। আপনি নিয়মিত এক্সপ্রেশনও ব্যবহার করতে পারেন, আমি এগুলির সমস্ত ব্যাখ্যা করব না তবে আপনি এখানে শুরু করতে পারেন http://www.w3schools.com/jsref/jsref_obj_regexp.asp । আমি জানি w3schools সেরা উত্স নয় তবে আমি এটি শুরু করার জন্য একটি ঠিক জায়গা পেয়েছি।

এখন বৈধতার অংশের জন্য: onsubmit="return validateForm()আপনার ফর্ম ট্যাগটিতে যুক্ত করুন যেখানে ভেলিয়েটফর্ম () হ'ল ফাংশন যা সমস্ত পরীক্ষা করে। এবং ফাংশনটি trueবৈধ এবং falseঅন্যথায় কেবল ফেরত দেয় । এটি ডিফল্ট বৈধকরণ ফাংশনকে ওভাররাইড করে (যা ডিফল্টরূপে কিছুই করে না)।

সুতরাং উপরের উদাহরণে, //errorদ্বারা প্রতিস্থাপন করা হবে return false। আপনি অন্যান্য জিনিসও করতে পারেন; যেমন সতর্কতা ত্রুটি তারপর মিথ্যা ফিরে। আপনি জাভাস্ক্রিপ্টও অবৈধ ক্ষেত্রগুলি হাইলাইট করতে ব্যবহার করতে পারেন (নিশ্চিত নয় যে এটি " জাভাস্ক্রিপ্ট থেকে অবৈধ / বৈধ হিসাবে একটি ইনপুট ক্ষেত্রটি চিহ্নিত করুন " বলে আপনি বোঝাতে চান )

অবশ্যই, আপনি যদি সমস্ত ক্ষেত্র চেক করতে না চান তবে নির্দিষ্ট ক্ষেত্রগুলি পাস হলে আপনাকে কেবল সত্যটিতে ফিরে আসতে হবে। আবার, আপনার এটির উপর নির্ভর করা উচিত নয়, তবে আপনি যদি কেবল গড় মানুষকে আটকাতে পারেন তবে এটি একটি সহজ সমাধান।


9
আপনি সম্পূর্ণ সঠিক, তবে আমি মনে করি না আপনি প্রশ্নটি পুরোপুরি বুঝতে পেরেছেন। এইচটিএমএল 5 এ, এইচটিএমএল মার্কআপে অ্যাট্রিবিউট মান যুক্ত করার বিভিন্ন উপায় রয়েছে যা অন্তর্নিহিত বৈধতার নিয়মকে বোঝায়। যখন কোনও ব্রাউজার সেই নিয়মগুলি প্রয়োগ করে, একটি ইনপুট ক্ষেত্র সিএসএসে ": বৈধ" বা ": অবৈধ" সিউডো-শ্রেণীর সাথে মেলে। সুতরাং, আপনি এই বৈশিষ্ট্যগুলির সাথে এইচটিএমএল এবং ": বৈধ" এবং ": অবৈধ" নির্বাচনী বিধি সহ সিলেটগুলি লিখতে পারেন এবং কোনও জাভাস্ক্রিপ্ট ছাড়াই ভিজ্যুয়াল প্রতিক্রিয়া দিতে পারেন। মূলত: ডিওএম বৈশিষ্ট্য হিসাবে ": কার্যকর" স্থিতি উপলব্ধ কিনা তা প্রশ্ন The
পয়েন্টি

-17

জাভা স্ক্রিপ্ট থেকে আমি কোনও ইনপুট ক্ষেত্রটিকে অবৈধ / বৈধ হিসাবে চিহ্নিত করতে পারি?

দুর্ভাগ্যক্রমে, আপনি জাভাস্ক্রিপ্টে সিউডো ক্লাসগুলি স্টাইল করতে পারবেন না, যেহেতু তারা আসল উপাদান নয়, আসল ডোমে তাদের উপস্থিত নেই।

ভ্যানিলা জাভাস্ক্রিপ্টের সাহায্যে আপনি যাচাইকরণ API ব্যবহার করতে পারেন ।

JQuery এ আপনি কেবল এটি করতে পারেন, http://jsfiddle.net/elclanrs/Kak6S/

if ( $input.is(':invalid') ) { ... }

বা বিকল্পভাবে, আমি ব্যবহৃত বৈধতা পদ্ধতি ওভাররাইড করতে পারি?

আপনি যদি এইচটিএমএল 5 বৈধতা ব্যবহার করছেন, তবে মার্কআপটিতে আটকে দিন। অন্যথায়, আপনি এইচটিএমএল 5 সহ বৈধতা অক্ষম করতে পারেন $form.attr('novalidate', 'novalidate')এবং আপনার ক্ষেত্রগুলি যাচাই করতে জেএস ব্যবহার করতে পারেন, এবং তারপরে সংযোজন validবা invalidক্লাসগুলি যেখানে প্রয়োজন। আমি এমন একটি প্লাগইন তৈরি করেছি যা এইচটিএমএল 5 ব্রাউজারগুলিকে সমর্থন করতে এই জাতীয়ভাবে কাজ করে।


আপনি কী স্টাইল করতে পারবেন না তার মানে? আমি ইতিমধ্যে এটি করছি। input:invalid + label::after{content: " INVALID";color: red;}ক্ষেত্রটি অবৈধ হলে আমার ইনপুট ফিল্ডের পাশে থাকা লেবেলের পরে ইনভ্যালিড পাঠ্যের একটি লাল টুকরো যুক্ত করে (উদাহরণস্বরূপ যদি কোনও ইমেল ক্ষেত্রে এটিতে একটি অবৈধ ইমেল থাকে)
সুইভিশ

11
"জাভাস্ক্রিপ্ট থেকে আমি কোনও ইনপুট ক্ষেত্রটিকে অবৈধ / বৈধ হিসাবে চিহ্নিত করতে পারি?" "দুর্ভাগ্যক্রমে, আপনি জাভাস্ক্রিপ্ট থেকে সিউডো ক্লাস স্টাইল করতে পারবেন না" প্রশ্নটি জিজ্ঞাসা করেছিল এমনটি নয়।
মাইকমেকানা

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