2012-12-07 115 views
1
<table class="csstable"> 
    <tr> 
     <td> 
     <textarea id="txtOption" rows="2" cols="30">hi this is me!!!</textarea> 
     </td> 
    </tr> 
    <tr> 
     <td> 
     <textarea id="txtOption" rows="2" cols="30">hi this is you!!!</textarea> 
     </td> 
    </tr> 

我做了什麼:使用jQuery獲取具有相同ID的文本框的值?

$(".csstable").each(function(){ 
     alert($("#txtOption").val()); 
     }); 

我得到在兩個時間,即文本區域的第一個值。 嗨,這是我!

+6

'ID'應該是唯一的。 –

+0

您不能有多個具有相同ID的元素。它違反了W3C制定的準則。 – thatidiotguy

+0

@thatidiotguy更重要的是,DOM解析器和JavaScript引擎將永遠不會找到給定ID的第二個實例。他們認爲身份證是唯一的,並在找到第一個身份證後停止尋找。 – Blazemonger

回答

1

您不能在頁面上擁有兩個具有相同值的ID,這是無效的。

ID必須是唯一的。

嘗試使用類(或別的東西)來選擇,而不是

<textarea class="txtoption1" rows="2" cols="30">option1</textarea> 

<textarea class="txtoption2" rows="2" cols="30">option2</textarea> 
+1

你爲什麼使用獨特的課程? –

+0

我正在動態創建這些textareas,所以我可以使這些textareas的ID像textOption1,textOption2一樣獨特,但是我可以不改變每一次。那麼如何獲得這些動態生成的textareas的文本? –

0

每個ID都必須是唯一的這就是所謂的id是有原因的。

相反,你應該使用class屬性

<textarea class="txtOption" rows="2" cols="30">hi this is you!!!</textarea> 

你可以閱讀更多關於它here

1

,當你用相同的ID一個以上的元素,你將只匹配的第一個元素。

因此,請使用class來代替,通過標記名稱或使用唯一標識符來獲取它。

然後你可以通過以下獲得它的價值。

$(".csstable .myTextareaClass").each(function(){ 
    alert($(this).val()); 
}); 

$(".csstable textarea").each(function(){ 
    alert($(this).val()); 
}); 

alert($('#textareaId').val()); 
相關問題