2013-04-29 92 views
1

我在訪問元素以驗證它時遇到問題。如何在javascript中訪問索引ID

例如,如果我從數據庫中生成一個動態表,我有一個看起來像這樣的代碼:

i=0; 

while($row as values){ 

    <input type='text' id='quantity[$i]' name='quantity[$i]' value=''> 
    <input type='text' id='quantity_req[$i]' name='quantity_req[$i]' value=''> 

    $i++; 
} 
<input type='hidden' id='i' name='i' value='$i'> 

我可以用$('#i').val()得到我的價值,但我怎麼能獲取文本字段的值?

$('#quantity[i]').val();$('#quantity[i]').val();不起作用,javascript似乎認爲「#quantity [i]」是一個字符串,儘管我已通過for循環給出'i'值。

我也試過$('#quantity' +i).val(),但它不工作。

+0

其簡單的兄弟,要獲取文本字段的值,您需要通過classname/id提取文本字段。例如:-' $('#txt')。val();'其中#txt是文本字段的ID。 – dreamweiver 2013-04-29 14:43:53

+2

實際上,字符串是JS爲什麼字符串插值不能很好地工作的一個很好的例子(至少沒有任何特殊的語法或格式)。你說*「儘管我通過for循環給出'我'一個值」*。所以你希望把''[i]''替換成''[0]''。但是,JavaScript如何知道它不應該取代'quantity'中的'i'?如果JS會替換變量,則結果字符串將是'#quant0ty [0]'。 – 2013-04-29 14:44:46

+0

從[documentation](http://api.jquery.com/category/selectors/):*「使用任何元字符(如'!」#$%&'()* + ,./:; <=>?@ [\]^\'{|}〜')作爲名稱的文字部分,必須用兩個反斜槓進行轉義:''\\''。「* – 2013-04-29 14:46:51

回答

0

試試這個

var ival=$('#i').val(); 
$('#quantity\\[' +ival+'\\]').val() 
+1

'['和']'是jQuery選擇器中需要轉義的特殊字符 – Ian 2013-04-29 14:44:18

+0

已更新。謝謝 – 2013-04-29 14:47:10

+0

謝謝拉胡爾和伊恩。這真的有幫助。 – user2332475 2013-04-29 14:48:39

1

的JavaScript似乎認爲的 「#quantity [我]」 作爲一個字符串

這是正確的。 "#quantity[i]"一個字符串; Javascript不會查看發生變量命名的字符串部分。

您需要將連接將值存入字符串中,就像您在最後嘗試的那樣。
但是,您還需要在括號中連接;你連接了#quantity1,這不是你正在尋找的字符串。

您還需要轉義括號,否則jQuery會將它們解析爲屬性選擇器。

+1

如果是這種情況那麼這應該工作 - > $('#quantity ['+ i +']')。val()但它仍然沒有。 – user2332475 2013-04-29 14:43:37

0

我認爲你是混合的JavaScript變量和PHP變量。

PHP變量與變量名稱前的'$'一起使用。

如果你想獲得輸入的值,你必須使用PHP變量,不要使用你喜歡的字母'i'。

你必須這樣做,從rahul maindargi回答,它應該工作。