2010-01-16 10 views
25

करने के लिए बाध्य वहाँ label रों (for विशेषता के माध्यम से) input क्षेत्रों के लिए बाध्य कर चयन करने के लिए required विशेषता निर्धारित होने सीएसएस में कोई तरीका है? कुछ की तरह:CSS चयनकर्ता इनपुट

label:input[required] { 
    ... 
} 

वर्तमान में, मैं class="required" लेबल और आदानों की स्टाइल के लिए जोड़ रहा। अब मेरे पास आवश्यक इनपुट फ़ील्ड में HTML5 विशेषता required="required" है। अनावश्यक वर्ग विशेषताओं को हटाना अच्छा लगेगा।

closest answer मैंने पाया label तत्व के for विशेषता का उपयोग नहीं है, लेकिन आवश्यकता होगी कि label सीधे HTML में इनपुट के निकट हो।

उत्तर

6

कैसे CSS 2 Attribute Selectors यह ब्राउज़र के बीच बहुत संगत है।

उदाहरण:

<style> 
label[required=required] 
{ 
color: blue; 
} 
</style> 
<label required="required" for="one">Label:</label><input name="one" id="one" /> 

इसके अलावा this की जाँच करें।

+5

स्पष्ट रूप से प्रश्न और उत्तर स्वरूपण का उपयोग करते हैं, लेकिन टिप्पणियां नहीं होती हैं। उस सुझाव के साथ समस्या यह है कि आवश्यक विशेषता इनपुट तत्व से संबंधित है, लेबल तत्व नहीं। सीएसएस में भी , बेहतर बंद: ई-मेल पता <= "ईमेल" के लिए लेबल> बस कह रही: इनपुट [आवश्यक] क्योंकि केवल वैध मार्कअप है: एचटीएमएल -> आवश्यक एक्सएचटीएमएल -> आवश्यक = "आवश्यक" आवश्यक = "false" या कुछ भी की तरह है कि मान्य नहीं है। –

+0

यह भी देखें: http://www.whatwg.org/specs/web-apps/current-work/multipage/common-input-element-attributes.html#the-required-attribute –

+0

हाँ, आवश्यक = आवश्यक अनावश्यक है। लेकिन यदि वह इनपुट से जुड़े सभी लेबल टैग प्राप्त करने में सक्षम होना चाहता है जिसमें आवश्यक विशेषता है तो मुझे नहीं लगता कि यह संभव है। आप सभी इनपुट @required 'इनपुट [आवश्यक]' प्राप्त कर सकते हैं, लेकिन सभी लेबल तब तक नहीं जब तक कि वे इनपुट के बच्चे नोड हैं, जो HTML में भी गलत है। – Tom

4

यह समाधान अधिकांश आधुनिक ब्राउज़र में काम करता है:

<style> 

label > input[required="required"] { 
    background: red; 
} 

</style> 
<label for="myField"><input required="required" id="myField" /></label> 
+1

मुझे लगता है कि ओपी एक चयनकर्ता के लिए पूछ रहा था जो प्रत्येक तत्व के लिए चयनकर्ता निर्दिष्ट करने से बचने के लिए सामान्य रूप से सभी आवश्यक तत्वों पर लागू होगा। –

+2

यदि आप लेबल/इनपुट (उन्हें घोंसला नहीं) का उपयोग करने के अनुशंसित तरीके का उपयोग कर रहे हैं तो यह काम नहीं करता है – ashwoods

+2

इस दृष्टिकोण के साथ दूसरी समस्या, या 'लेबल + इनपुट [आवश्यक]' जो कुछ है, वह है कि आप स्टाइल कर रहे हैं टैग करें और

0

मुझे नहीं लगता कि यह वास्तव में रास्ता है कि ओ पी चाहता है में सीएसएस के माध्यम से पूरा किया जा सकता। सीएसएस बस उस तरह से काम नहीं करता है।

मेरी राय में एक बेहतर दृष्टिकोण पीछे हटना और बड़ी तस्वीर को देखना है। आपके पास एक ऐसा फॉर्म है जहां कुछ फ़ील्ड आवश्यक हैं और कुछ नहीं हैं। उपयोगकर्ता को सभी आवश्यक फ़ील्ड पहले देने या आवश्यक फ़ील्ड को एक साथ समूह देने और वैकल्पिक फ़ील्ड से उन्हें स्पष्ट रूप से अलग रखने का एक अच्छा तरीका है।

आप के रूप

<form> 
    <ul class="required_fields"> 
     <li> 
      <label>username</label> 
      <input /> 
     </li> 
     <li> 
      <label>email</label> 
      <input /> 
     </li> 
    </ul 
    <ul class="optional_fields"> 
      ... 
    </ul> 
</form> 

/* CSS */ 
.required_fields label {font-weight: bold} 
.required_fields label:after { content: "*"; color: red } /*more styles for labels*/ 

एक संरचना इस तरह बना सकते हैं इस दृष्टिकोण के लिए लाभ की एक संख्या हैं। आप प्रत्येक व्यक्ति को अलग-अलग संशोधित किए बिना आसानी से 'आवश्यक' समूह से आइटम जोड़ और निकाल सकते हैं। आप जितनी चाहें उतनी श्रृंखला के रूप में 'आवश्यक' कक्षा असाइन कर सकते हैं। अगर फॉर्म में 'आवश्यक' वर्ग था, तो इसमें सबकुछ आवश्यकतानुसार लेबल किया जाएगा। परिवर्तन करने के लिए कम जगहें हैं, अगर आपने फैसला किया कि 'आवश्यक' वर्ग को कुछ और कहा जाना चाहिए। और सामान्य रूप से यह दृष्टिकोण आपको अपने रूपों को व्यवस्थित करने में भी मदद करता है। आपको आवश्यक और वैकल्पिक फ़ील्ड को अंतःस्थापित नहीं करना चाहिए।

आप इसे एक कदम आगे ले सकते हैं और कुछ जावास्क्रिप्ट है जो इनपुट फ़ील्ड में आवश्यक विशेषता को इंजेक्ट करेगा।

$(".required_fields input").each(function(){ 
    this.setAttribute('required', 'required'); 
}); 
+0

यह एक कठोर आवश्यकता है और एक विशेष डिजाइन निर्णय को मजबूर करता है। एक मेलिंग पता पूछने पर विचार करें। हमें पता पंक्ति 1, शहर, राज्य, ज़िप की आवश्यकता है। आप प्रवाह लाइन 2 को प्रवाह से बाहर ले जाएंगे क्योंकि यह वैकल्पिक है? लोग मेलिंग पते की संरचना से परिचित हैं और यह एक मानक तरीके से संरचित करना चाहते हैं। –

+0

उस मामले में पता पंक्ति 2 अपवाद है, और अपवाद के रूप में इसे विशेष उपचार मिलना चाहिए। शायद एक वर्ग '.not_required' जो आवश्यक शैली को अक्षम करता है। '.ququired_fields label.not_required: {content:" "}} के बाद। सामान्य से अधिक विशिष्ट जाने के लिए एक सही समाधान की तरह लगता है। – mastaBlasta

संबंधित मुद्दे