2014-02-27 41 views
1

我需要禁用一組輸入元素,而不必在每個元素中設置禁用屬性。因爲在我的情況下,這些元素都在表格的行內,我認爲將屬性放在容器tr中,但據我所知,只有輸入元素支持它。我希望能夠做到這樣的事情:立即禁用一組輸入元素

<table> 
    <tr disabled="disabled"> 
     <td><input name="i1" type="checkbox" .../></td> 
     <td><input name="i2" type="text" .../></td> 
      ... 
     <td><input name="iN" type="text" .../></td> 
    </tr> 
</table> 

並且禁用從i1到iN的每個輸入。 我怎樣才能達到相同的結果,也許使用CSS或其他方法?

+0

我能想到的唯一方法就是使用Javascript。這對你來說是一種選擇嗎? –

+1

我同意,在CSS中沒有「很好」的方法。我會使用JavaScript。 – Tim

回答

1

您無法通過CSS禁用。


你可以通過javascript來實現它(就像Dryden Long的答案)。禁用有問題的所有輸入tr

但是,這有問題在呈現時未被禁用。這意味着總會有一個輸入未被禁用的時刻。要提醒的是。


我不知道你如何創建這些輸入。但是,例如,如果它們是通過PHP生成的,則可以在循環中指定它。

即使你不這樣做,如果你可以在你的服務器上使用PHP,那可能會讓事情變得更容易。 這是因爲這樣做簡單:

<table> 
    <tr disabled="disabled"> 
     <td><input name="i1" type="checkbox" .../></td> 
<?php 
    for ($i=2;$i<$n;$i++) 
     echo '<td><input name="i'.$i.'" type="text" disabled="disabled" .../></td>'; 
?> 
    </tr> 
</table> 

如果你有不同的類型,你總是可以這樣做:

<table> 
    <tr disabled="disabled"> 
<?php 
    $arr = array("checkbox","text","text"...); 
    for ($i=0;$i<$n;$i++) 
     echo '<td><input name="i'.($i+1).'" type="'.$arr[$i].'" disabled="disabled" .../></td>'; 
?> 
    </tr> 
</table> 

如果你想避免相同的字符串,你可以創建一個第二個數組來存儲不同的可能值。像這樣:

<table> 
    <tr disabled="disabled"> 
<?php 
    $arr1 = array(0,1,1,1,0,1...); 
    $arr2 = array("checkbox","text"); 
    for ($i=0;$i<$n;$i++) 
     echo '<td><input name="i'.($i+1).'" type="'.$arr2[$arr1[$i]].'" disabled="disabled" .../></td>'; 
?> 
    </tr> 
</table> 
+0

是的,實際上我使用PHP來生成它們。但它不會發生在循環內部,因爲它們都是不同的。準確地說,我在其中指定了不同的類型(複選框在第一個,文本在第二個),以突出顯示。我知道我可以設置回顯PHP的禁用屬性,但我必須明確地爲每個輸入執行操作,這就是我想要避免的。 – slashCoder

+0

您可以創建一個變量$ dis ='disabled =「disabled」'並在每個中連接。 或者您可以創建一個數組,其中包含每個輸入的類型和名稱以及循環遍歷所有輸入的循環。 – Edu

+0

我向答案中添加了如何使用數組來存儲不同類型的輸入。 – Edu

1

如果你可以使用JavaScript,這樣的事情會做的伎倆:

var inputs = document.getElementsByTagName("INPUT"); 
for (var i = 0; i < inputs.length; i++) { 
    inputs[i].disabled = true; 
} 

或者如果你使用jQuery,這種方法可能是簡單的:

$("input").prop("disabled", true); 

如果你可以」不使用Javascript,那麼我能想到的唯一辦法就是使用CSS來隱藏<input>標籤,但這並不能真正禁用它們,只能將它們隱藏起來。所以,如果任何輸入都有默認值,這些值仍然會通過。

input { 
    display: none; 
} 

所有事情都相同,我絕對推薦使用Javascript或jQuery方法。

1

的最好的辦法是使用JQuery

$('.disabled input').attr('disabled','disabled');

這將禁用禁用行下輸入的所有元素。