लघु संस्करण
element.setAttribute("required", "");
element.required = true;
jQuery(element).attr('required', '');
$("#elementId").attr('required', '');
element.removeAttribute("required");
element.required = false;
jQuery(element).removeAttr('required');
$("#elementId").removeAttr('required');
if (edName.hasAttribute("required")) { }
if (edName.required) { }
दीर्घ संस्करण
एक बार टीजे क्राउडर परिलक्षित गुणों को इंगित करने में कामयाब रहे , मैंने सीखा कि सिंटैक्स का पालन करना गलत है :
element.attributes["name"] = value;
element.attributes.name = value;
value = element.attributes.name;
value = element.attributes["name"];
आपको अवश्य जाना चाहिएelement.getAttribute
और element.setAttribute
:
element.getAttribute("foo");
element.setAttribute("foo", "test");
ऐसा इसलिए है क्योंकि विशेषता में वास्तव में एक विशेष HtmlAttribute ऑब्जेक्ट है:
element.attributes["foo"];
element.attributes.foo;
एक विशेषता मान को "सही" पर सेट करके, आप गलती से इसे String ऑब्जेक्ट पर सेट कर रहे हैं , बजाय HtmlAttribute ऑब्जेक्ट के इसके लिए:
element.attributes["foo"] = "true";
element.setAttribute("foo", "true");
वैचारिक रूप से सही विचार (टाइप की गई भाषा में व्यक्त), है:
HtmlAttribute attribute = new HtmlAttribute();
attribute.value = "";
element.attributes["required"] = attribute;
इसलिए:
getAttribute(name)
setAttribute(name, value)
मौजूद। वे HtmlAttribute ऑब्जेक्ट के अंदर मान निर्दिष्ट करने पर कार्य करते हैं।
इसके ऊपर, कुछ विशेषता परिलक्षित होती है । इसका मतलब है कि आप उन्हें जावास्क्रिप्ट से अधिक अच्छी तरह से एक्सेस कर सकते हैं:
element.required = true;
if (element.required) {...}
element.required = false;
जो आप नहीं करना चाहते हैं वह गलती से .attributes
संग्रह का उपयोग करें :
element.attributes.required = true;
if (element.attributes.required) {...}
element.attributes.required = false;
परीक्षण परीक्षण
इसने एक required
विशेषता के उपयोग के इर्द-गिर्द परीक्षण किया , जो कि गुण के माध्यम से लौटाए गए मूल्यों और परावर्तित संपत्ति की तुलना करता है
document.getElementById("name").required;
document.getElementById("name").getAttribute("required");
परिणामों के साथ:
HTML .required .getAttribute("required")
========================== =============== =========================
<input> false (Boolean) null (Object)
<input required> true (Boolean) "" (String)
<input required=""> true (Boolean) "" (String)
<input required="required"> true (Boolean) "required" (String)
<input required="true"> true (Boolean) "true" (String)
<input required="false"> true (Boolean) "false" (String)
<input required="0"> true (Boolean) "0" (String)
.attributes
संग्रह को सीधे एक्सेस करने की कोशिश करना गलत है। यह DOM विशेषता का प्रतिनिधित्व करने वाली वस्तु लौटाता है:
edName.attributes["required"] => [object Attr]
edName.attributes.required => [object Attr]
यह बताता है कि आपको कभी भी .attributes
संग्रह से सीधे बात क्यों नहीं करनी चाहिए । आप विशेषताओं के मूल्यों में हेरफेर नहीं कर रहे हैं , लेकिन ऑब्जेक्ट जो स्वयं विशेषताओं का प्रतिनिधित्व करते हैं।
कैसे सेट करें आवश्यक?
required
एक विशेषता पर सेट करने का सही तरीका क्या है ? आपके पास दो विकल्प हैं, या तो परिलक्षित संपत्ति , या विशेषता को सही ढंग से सेट करने के माध्यम से:
element.setAttribute("required", "");
edName.required = true;
कड़ाई से बोलते हुए, कोई भी अन्य गुण विशेषता को "सेट" करेगा। लेकिन Boolean
विशेषताओं की परिभाषा निर्धारित करती है कि इसे केवल सच्चे""
संकेत के लिए खाली स्ट्रिंग पर सेट किया जाना चाहिए । सब काम निम्न विधियों को सेट बूलियन विशेषता, required
लेकिन उनका उपयोग न करें :
element.setAttribute("required", "required");
element.setAttribute("required", "foo");
element.setAttribute("required", "true");
element.setAttribute("required", "false");
element.setAttribute("required", false);
element.setAttribute("required", 0);
हमने पहले ही यह जान लिया कि विशेषता को सीधे सेट करने की कोशिश करना गलत है:
edName.attributes["required"] = true;
edName.attributes["required"] = "";
edName.attributes["required"] = "required";
edName.attributes.required = true;
edName.attributes.required = "";
edName.attributes.required = "required";
कैसे करने के लिए साफ़ हो आवश्यक है?
विशेषता को हटाने की कोशिश करते समय चाल required
यह है कि गलती से इसे चालू करना आसान है:
edName.removeAttribute("required");
edName.required = false;
अमान्य तरीकों से:
edName.setAttribute("required", null);
edName.setAttribute("required", "");
edName.setAttribute("required", "false");
edName.setAttribute("required", false);
edName.setAttribute("required", 0);
परिलक्षित .required
संपत्ति का उपयोग करते समय , आप इसे बंद करने के लिए किसी भी "गलत" मान का उपयोग कर सकते हैं , और इसे चालू करने के लिए सत्य मान। लेकिन सिर्फ स्पष्टता के लिए सच्चे और झूठ पर टिके रहें।
कैसे करने के लिए जाँच के लिए required
?
.hasAttribute("required")
विधि के माध्यम से विशेषता की उपस्थिति के लिए जाँच करें :
if (edName.hasAttribute("required"))
{
}
आप इसे बूलियन परावर्तित .required
संपत्ति के माध्यम से भी देख सकते हैं:
if (edName.required)
{
}
required="false"
, क्या उन्होंने कभी मानक लिखने से पहले एक टेम्पलेट लिखा था? सशर्त विशेषताएँ आमतौर पर एक दर्द होती हैं, यह आसान है कि विशेषता मूल्य में सिर्फ बूलियन डाल दिया जाए ...