2012-04-02 53 views
0

我有這個字段如何更改具有相同的id和名稱jquery的兩個隱藏字段的值?

<input type="hidden" id="uidhcdm" name="uidhcdm" value="0"> 
<input type="hidden" id="uidhcdm" name="uidhcdm" value="0"> 

,我使用一個函數調用改變VAL

function changeval(x,val) 
{ 
    $('#'+x).val(val); 
} 

但是當我運行功能它隻影響第一隱藏字段值但未秒!

請幫助我!

+7

你不應該用相同的ID兩個字段! – 2012-04-02 12:10:45

+4

你不應該有兩個具有相同ID的元素。在這種情況下,通過'class'選擇。 – asawyer 2012-04-02 12:10:53

+1

不能有超過1個元素具有相同的ID,結果是不可預知的。改爲使用class。 – Th0rndike 2012-04-02 12:11:09

回答

2

您可以將輸入字段放在div容器中,例如

<div id="View"> 
<input type="hidden" id="uidhcdm" name="uidhcdm" value="0"> 
<input type="hidden" id="uidhcdm" name="uidhcdm" value="0"> 
</div> 

然後使用類似的東西?

function changeval(x,val) { 
$("#View > input").each(function() { 
if ($(this).id===x) { 
    $(this).val(val); 
}})}; 

我很確定這會起作用,或者對其進行小的修改。

+0

不是我主張有相同的元素ID ...我不知道===運算符是否能正常工作 – Oofpez 2012-04-02 12:30:32

4

您必須認識到標籤的屬性「id」必須是唯一的。您可以爲「id」定義更多具有相同值的元素,但每個DOM訪問只會檢索第一個元素,因爲根據定義,只有一個元素可以擁有一個特定的ID。
其他詞:對於多個元素具有相同的id是錯誤的代碼。

+0

thaks多數民衆贊成 – Beraki 2012-04-03 12:38:28

2

ID應該是唯一的。更改idclass

<input type="hidden" class="uidhcdm" name="uidhcdm" value="0"> 
<input type="hidden" class="uidhcdm" name="uidhcdm" value="0"> 

changeval()然後換#.

function changeval(x,val) { 
    $('.'+x).val(val); 
} 
+0

你們搖滾謝謝! – Beraki 2012-04-03 12:39:11