2013-04-23 91 views
0

我有一個網站表單,其中只有當複選框被選中時,我才需要填寫字段(使用JQuery插件)。JavaScript如果複選框被選中不起作用

到目前爲止,我編寫的JavaScript可以在複選框未選中或檢查的情況下起作用。但是,當用戶選中該複選框並取消選中時,該代碼不起作用(未選中時該字段仍然是必需的)。

另外一個錯誤是由於某些原因,這個相同的代碼只適用於只更新一個項目所需的布爾值。例如,如果我具有相同的代碼,但是將其更新爲兩個元素,則腳本根本不起作用。

下面是相關的源代碼:

<script> 
function swap(){ 
    if(document.getElementById('must').checked){  
    document.getElementById("element1").setAttribute("required", "true"); 
    }else{  
    document.getElementById("element1").setAttribute("required", "false"); 
    } 
} 
</script> 


<form> 
<input type="checkbox" onclick="swap();" id="must" name="must" value="1" style="width:10;"> 
<input id="element1" type="text" name="element1" placeholder="Enter Value" > 
<input type="submit" id="submit" name="submit" value="Send" > 
</form>  

任何援助將不勝感激。

回答

1

試試這個,在XHTML中我們指定所需=「需要」,有沒有需要=「假」,更好的方式是刪除其他要求的屬性

<script type="text/javascript"> 
    function swap(){ 
    if(document.getElementById('must').checked){  
    document.getElementById("element1").setAttribute("required", "required"); 
    }else{  
    document.getElementById("element1").removeAttribute("required"); 
    } 
} 
    </script> 
+0

工作,非常感謝你!顯然,將所需的屬性設置爲另一個值不起作用,您說得對,我必須刪除該元素屬性。再次感謝! – 2013-04-23 02:07:32

2

我知道檢查是否checkboxchecked的最佳方法,它使用jQuery is()方法(documentation)。它爲您處理x瀏覽器差異。將屬性添加到HTML元素的最佳方法是使用attr()方法。

if($("#must").is(":checked")) { 
    $("#element1").attr('required', 'required'); 
} else { 
    $("#element1").removeAttr(); 
} 

您可以在DOM檢查器中檢查該屬性是否已添加。

必需的屬性文檔是here

+0

我試過了,但得到了相同的結果;是否可能是因爲required =「false」而不是真正使元素成爲必需的。如果我在過去的時候沒有記錯的話,當我在元素上添加required =「false」時,它仍然是必需的。 – 2013-04-23 02:00:39

+0

@卡洛斯問題不在於他檢查是否檢查的方法 – smerny 2013-04-23 02:00:53

+0

我剛剛注意到了什麼問題,但@DevonBernard更快;) – Karol 2013-04-23 02:15:33

0

必需的屬性是一個布爾屬性,它的存在意味着該字段是必需的,它的缺席意味着該字段不是必需的。它只有3個有效形式單獨1. required本身2. required=""等於一個空字符串3. required="required"