উত্তর:
যদি কেবল ক্ষেত্র থাকে তবে required
আপনি যেতে পারেনinput:valid
#foo-thing:valid + .msg { visibility: visible!important; }
<input type="text" id="foo-thing" required="required">
<span class="msg" style="visibility: hidden;">Yay not empty</span>
JsFizz এ লাইভ দেখুন
বা ব্যবহার #foo-thing:invalid
করে উপেক্ষা করুন (@ স্যামগুডির কাছে ক্রেডিট)
আধুনিক ব্রাউজারগুলিতে আপনি :placeholder-shown
খালি ইনপুটটিকে লক্ষ্য করতে ব্যবহার করতে পারেন (এতে বিভ্রান্ত হওয়ার দরকার নেই ::placeholder
)।
input:placeholder-shown {
border: 1px solid red; /* Red border only if the input is empty */
}
আরও তথ্য এবং ব্রাউজার সমর্থন: https://css-tricks.com/almanac/selectors/p/ placeholder-shown/
সিএসএসে কোনও নির্বাচক নেই যা এটি করে। গুণবাচক নির্বাচকরা গুণিত মানগুলি নয়, গুণকীর্তিগুলির সাথে মিল পান।
আপনাকে জাভাস্ক্রিপ্ট ব্যবহার করতে হবে।
:empty
নির্বাচক কেবল খালি উপাদানগুলিতে কাজ করে, কেবলমাত্র সেই উপাদানগুলির মধ্যে যার মধ্যে খোলার এবং বন্ধ করার ট্যাগ থাকে যা ফাঁকা থাকে এবং একক ট্যাগ উপাদান যা সর্বদা খালি বিবেচিত হয়, উদাহরণস্বরূপ , এটি ইনপুট উপাদানগুলিতে ব্যবহার করা যাবে নাtextarea
কোনও ক্ষেত্রের মান আপডেট করা DOM এ এর মান বৈশিষ্ট্য আপডেট করে না তাই আপনার নির্বাচক সর্বদা কোনও ক্ষেত্রের সাথে মিল রাখে, এমনকি এটি খালি না হলেও।
পরিবর্তে invalid
সিউডো-ক্লাসটি আপনি যা চান তা অর্জন করতে ব্যবহার করুন :
input:required {
border: 1px solid green;
}
input:required:invalid {
border: 1px solid red;
}
<input required type="text" value="">
<input required type="text" value="Value">
input[value=""], input:not([value])
সঙ্গে কাজ করে:
<input type="text" />
<input type="text" value="" />
তবে কেউ টাইপ করা শুরু করার সাথে সাথে স্টাইলটি পরিবর্তন হবে না (এর জন্য আপনার জেএস প্রয়োজন)।
input[value=""], input:not([value])
।
সমর্থনকারী লিগ্যাসি ব্রাউজারের প্রয়োজন নেই, তাহলে আপনি একটি সমন্বয় ব্যবহার করতে পারে required
, valid
এবং invalid
।
এটি ব্যবহারের ভাল জিনিস হ'ল valid
এবং invalid
সিউডো-উপাদানগুলি ইনপুট ক্ষেত্রগুলির ধরণের বৈশিষ্ট্যগুলির সাথে ভাল কাজ করে। উদাহরণ স্বরূপ:
input:invalid, textarea:invalid {
box-shadow: 0 0 5px #d45252;
border-color: #b03535
}
input:valid, textarea:valid {
box-shadow: 0 0 5px #5cd053;
border-color: #28921f;
}
<input type="email" name="email" placeholder="john_doe@example.com" required />
<input type="url" name="website" placeholder="http://johndoe.com"/>
<input type="text" name="name" placeholder="John Doe" required/>
রেফারেন্সের জন্য, জেএসফিডেল এখানে: http://jsfiddle.net/0sf6m46j/
$('input#edit-keys-1').blur(function(){
tmpval = $(this).val();
if(tmpval == '') {
$(this).addClass('empty');
$(this).removeClass('not-empty');
} else {
$(this).addClass('not-empty');
$(this).removeClass('empty');
}
});
jQuery এ। আমি একটি ক্লাস যুক্ত করেছি এবং CSS সহ স্টাইলযুক্ত।
.empty { background:none; }
এটি আমার পক্ষে কাজ করেছে:
এইচটিএমএল এর required
জন্য, ইনপুট উপাদানটিতে বিশিষ্ট যুক্ত করুন add
<input class="my-input-element" type="text" placeholder="" required />
সিএসএসের জন্য, :invalid
খালি ইনপুটটিকে লক্ষ্য করতে নির্বাচকটি ব্যবহার করুন
input.my-input-element:invalid {
}
মন্তব্য:
required
থেকে সম্পর্কে : "উপস্থিত থাকাকালীন , এটি নির্দিষ্ট করে যে ফর্মটি জমা দেওয়ার আগে একটি ইনপুট ক্ষেত্রটি পূরণ করতে হবে" "এই প্রশ্নটি সম্ভবত কিছু সময় আগে জিজ্ঞাসা করা হয়েছিল, তবে আমি সম্প্রতি ক্লায়েন্ট-সাইড ফর্ম বৈধকরণের সন্ধানের জন্য এই বিষয়টিতে অবতীর্ণ হয়েছিলাম এবং :placeholder-shown
সমর্থনটি আরও ভাল হচ্ছে, আমি ভেবেছিলাম নিম্নলিখিতটি অন্যকে সাহায্য করতে পারে।
ব্যবহার Berend এই CSS4 সিউডো-বর্গ ব্যবহার করার ব্যাপারে, আমি পরে ব্যবহারকারী এটিকে ভর্তি সমাপ্ত হয় শুধুমাত্র আলোড়ন সৃষ্টি একটি ফর্ম যাচাইকরণ তৈরি করতে সক্ষম হন।
এখানে কোডপেন সম্পর্কিত অ্যাডেমো এবং ব্যাখ্যা: https://codepen.io/johanmouchet/pen/PKNxKQ
আপনি যদি IE বা প্রাক-ক্রোমিয়াম এজকে সমর্থন না করে খুশি হন (যা আপনি এটি প্রগতিশীল বর্ধনের জন্য ব্যবহার করছেন তবে ভাল হতে পারে), আপনি :placeholder-shown
বেরেন্ড যেমন বলেছিলেন তেমন ব্যবহার করতে পারেন । নোট করুন যে ক্রোম এবং সাফারির জন্য আপনার কাজ করার জন্য বাস্তবে আপনার খালি খালি স্থানধারক প্রয়োজন, যদিও কোনও স্থান কাজ করে।
*,
::after,
::before {
box-sizing: border-box;
}
label.floating-label {
display: block;
position: relative;
height: 2.2em;
margin-bottom: 1em;
}
label.floating-label input {
font-size: 1em;
height: 2.2em;
padding-top: 0.7em;
line-height: 1.5;
color: #495057;
background-color: #fff;
background-clip: padding-box;
border: 1px solid #ced4da;
border-radius: 0.25rem;
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
label.floating-label input:focus {
color: #495057;
background-color: #fff;
border-color: #80bdff;
outline: 0;
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
label.floating-label input+span {
position: absolute;
top: 0em;
left: 0;
display: block;
width: 100%;
font-size: 0.66em;
line-height: 1.5;
color: #495057;
border: 1px solid transparent;
border-radius: 0.25rem;
transition: font-size 0.1s ease-in-out, top 0.1s ease-in-out;
}
label.floating-label input:placeholder-shown {
padding-top: 0;
font-size: 1em;
}
label.floating-label input:placeholder-shown+span {
top: 0.3em;
font-size: 1em;
}
<fieldset>
<legend>
Floating labels example (no-JS)
</legend>
<label class="floating-label">
<input type="text" placeholder=" ">
<span>Username</span>
</label>
<label class="floating-label">
<input type="Password" placeholder=" ">
<span>Password</span>
</label>
</fieldset>
<p>
Inspired by Bootstrap's <a href="https://getbootstrap.com/docs/4.0/examples/floating-labels/">floating labels</a>.
</p>
আমি উত্তরগুলি নিয়ে অবাক হয়েছি খালি ইনপুট বাক্সগুলি পাওয়ার জন্য আমাদের স্পষ্ট বৈশিষ্ট্য রয়েছে, এই কোডটি একবার দেখুন
/*empty input*/
input:empty{
border-color: red;
}
/*input with value*/
input:not(:empty){
border-color: black;
}
হালনাগাদ
input, select, textarea {
border-color: @green;
&:empty {
border-color: @red;
}
}
বৈধতার দুর্দান্ত চেহারা পাওয়ার জন্য আরও বেশি
input, select, textarea {
&[aria-invalid="true"] {
border-color: amber !important;
}
&[aria-invalid="false"], &.valid {
border-color: green !important;
}
}
:empty
কেবলমাত্র এমন উপাদানগুলিতে প্রয়োগ হয় যার কোনও সন্তান নেই। ইনপুটগুলিতে মোটেই শিশু নোড থাকতে পারে না তাই আপনার ইনপুট সর্বদা লাল সীমানার সাথে থাকবে। এছাড়াও এই মন্তব্যটি দেখুন
value
শিশু নোডের সংখ্যা পরিবর্তন করে না।
<parent><child></child></parent>
)। আপনার ঠিক আছে <input></input>
এবং আপনি যা টাইপ করছেন <value>
<input>
<input value='stuff you type'></input>
আমি বুঝতে পারি এটি একটি খুব পুরানো থ্রেড, তবে বিষয়গুলি কিছুটা পরিবর্তিত হয়েছে এবং এটি আমার সমস্যাটি স্থির করার জন্য প্রয়োজনীয় জিনিসগুলির সঠিক সংমিশ্রণটি খুঁজে পেতে আমাকে সহায়তা করেছিল। তাই আমি ভেবেছিলাম আমি যা করেছি তা ভাগ করে দেব।
সমস্যাটি হ'ল আমি একই সিএসএস পূরণ করতে চাইলে alচ্ছিক ইনপুটটির জন্য আবেদন করতে পেরেছি, যেমন আমার একটি পূরণের প্রয়োজন ছিল। সিএসএসো psuedo ক্লাসটি ব্যবহার করেছেন: বৈধ যা পূরণ না করা অবস্থায় alচ্ছিক ইনপুটটিতে CSS প্রয়োগ করে।
এইভাবেই আমি এটি স্থির করেছি;
এইচটিএমএল
<input type="text" required="required">
<input type="text" placeholder="">
সিএসএস
input:required:valid {
....
}
input:optional::not(:placeholder-shown){
....
}