2013-04-10 125 views
0

我有這樣的一堆文字輸入的形式:如何獲取具有某個名稱的所有輸入?

<input type="text" name="option[]" value="option 1" onBlur="outputOptions()"> 
<input type="text" name="option[]" value="option 2" onBlur="outputOptions()"> 
<input type="text" name="option[]" value="option 3" onBlur="outputOptions()"> 

我希望能夠得到所有的輸入值,所以我試着這樣做:

function outputOptions() 
{ 
    console.log("inside outputOptions"); 

     $("input[name=option]").each(
      function() { 
       console.log("option value: " + $(this).value); 
      } 
     ); 
} 

在我的網站上,結果是,當我點擊進出文本輸入時,我看到「內部outputOptions」,但沒有文本輸入值被打印出來。

我在做什麼錯?

的jsfiddle:http://jsfiddle.net/6zguZ/2/

+0

可能的重複:http://stackoverflow.com/questions/5000368/select-input-field-with-name-as-array-field – showdev 2013-04-10 22:19:19

+3

1.'option!= option []'2.'$(this ).value' – 2013-04-10 22:19:30

回答

5

你所獲得的價值走錯了路:

console.log("option value: " + this.value); 

如果你真的使用jQuery,你會怎麼做:

console.log("option value: " + $(this).val()); 

但沒有理由這樣做。

您還需要使用實際名稱來選擇:

$('input[name="option[]"]').each(

這不是一個jQuery選擇匹配沒有元素的錯誤,所以你沒有錯誤類似的東西。

+0

'input [name =「option []」]'會產生一個語法錯誤'未捕獲的錯誤:語法錯誤,無法識別的表達式:input [name = option []]' – Nope 2013-04-10 22:24:01

+0

@FrançoisWahl嗯給我一個秒。 ..不,我沒有得到一個語法錯誤。你是否把這個名字放在雙引號中,就像我一樣? – Pointy 2013-04-10 22:24:51

+0

的確,你是對的。我的壞,我沒有注意到你的報價。在那種情況下,我的答案完全是多餘的。 +1給你的。 – Nope 2013-04-10 22:33:23

2

試試這個Vanilla JS

var inputs = document.getElementsByName("option[]"), l = inputs.length, i; 
for(i=0; i<l; i++) { 
    console.log(inputs[i].value); 
} 

編輯:這裏有一個speed test說明爲什麼這不是jQuery的更好。

+1

這個答案讓我想起了關於jQuery在Web設計器問題202 - 第41頁中的文章。引用:「讀取最好使用vanilla for循環而不是$ .each,或者它更好練習使用getElementByClassName通過jQuery sizzle引擎,因爲它更快。這類技巧的問題在於,他們將預優化的想法推向了極致,並沒有解決各種瀏覽器不一致問題 - jQuery爲我們解決的問題。運行測試,觀察1k次重複節省幾毫秒並不是放棄jQuery的理由。「 – Nope 2013-04-10 22:42:42

+1

它繼續說道:」您的時間投入在調整應用程序的某些部分上,這些部分實際上會有所不同,例如例如,你的圖像的大小。「 - 沒有任何意圖,當我讀到這個答案時,我剛剛得到了這篇文章的完整回憶。非答案,答案+1,因爲它也是一個有效的工作解決方案。 – Nope 2013-04-10 22:45:21

+0

@FrançoisWahl當然,我明白。但是getElementsByName,length和for已經在JavaScript的第一個版本中出現並且標準化了。 – 2013-04-10 23:17:01

相關問題