2014-09-02 42 views
4

我有一個輸入控件,它是必填字段。但是,我想使用JavaScript來動態更改所需的屬性,因此它可能不是必需的。但是,它不起作用。任何想法如何使其工作?動態更改html5輸入控件所需的分支

window.onload = function(){ 
    document.getElementById("website").setAttribute("required","false"); 
} 

<input id="website" type="url" required> 
+0

提交時可能出現[Bypass HTML「required」屬性需要重複)(http://stackoverflow.com/questions/18725078/bypass-html-required-attribute-when-submitting) – AeroX 2014-09-02 16:41:30

回答

3

required是所謂boolean attribute。這僅僅表明輸入是必需的。它具有哪個價值並不重要。

刪除屬性,如果你想輸入可選的(同樣適用於所有布爾屬性):

document.getElementById("website").removeAttribute("required"); 

另外,訪問DOM屬性並將其設置爲false

document.getElementById("website").required = false; 

您通常應該使用prefer dealing with properties than with attributes。它也使意圖更清晰。

3

可能需要使用的removeAttribute方法()

0

這個問題類似於另一個涉及 「隱藏」 屬性。和更廣泛的相容性,可考慮使用的屬性的XHTML形式,而不是HTML形式:

<input id="website" type="url" required="required" /> 

(爲「hidden」的是,爲隱藏=「隱藏」被指定的屬性的相似性)

無論如何,當試圖在JavaScript中更改隱藏屬性的值時,將其設置爲「false」不起作用。但是,將其設置爲空字符串呢,所以這就是你可以嘗試爲「必要」:

document.getElementById("website").required=""; 
document.getElementById("website").required="required"; //when required wanted 
+0

將*屬性*設置爲false '當然有效。在支持「required」的瀏覽器中嘗試http://jsfiddle.net/zpLt4rye/。 – 2014-09-02 16:54:42

+0

那麼也許最初的問題提問者的真正問題是「假」(字符串)和假(布爾)之間的差異。這個字符串當然並不等於boolean false。 – vernonner3voltazim 2014-09-02 17:16:38

+0

哦,是的,這是正確的。 – 2014-09-02 17:28:41