2012-01-27 17 views
1

我無法選擇隱藏表單字段值,它是具有相同名稱的隱藏表單字段值數組的一部分。以下是該數組的一個元素看起來像:如何使用JQuery來選擇一個隱藏表單字段值,它是隱藏表單字段值數組的一部分?

<input data-val="true" data-val-number="The field ProductId must be a number." data-val-required="The ProductId field is required." id="OrderItemViewModels_2__ProductId" name="OrderItemViewModels[2].ProductId" type="hidden" value="3" /> 

我曾嘗試選擇它JQuery的幾種不同的方法,如:

$('#OrderItemViewModels[2].ProductId').val()); 

和..

$('#OrderItemViewModels\\[2\\].ProductId').val()); 

兩者都不哪些工作。我也嘗試了其他一些方法。所以,我嘗試了下面的一些建議,希望能夠在警報中打印這些值。我試過這些:

alert('valueDirect2=' + $('#OrderItemViewModels_2__ProductId')).val(); 
alert('valueDirect1=' + $('input[name="OrderItemViewModels[2].ProductId"]')).val(); 

這導致在這兩種情況下打印valueDirect2 = [Object object]。爲什麼?這裏有什麼問題?

我不知道如何獲得這些值。任何幫助?

+0

這些都不是由'OrderItemViewModels_2__ProductId' – greggreg 2012-01-27 02:06:11

回答

4

你是否需要這是動態的,即選擇input字段的動態變化?如果是這樣,您需要將一個變量添加到選擇器的中間。

如果修改這樣的現有代碼,它會工作:

$('#OrderItemViewModels_2__ProductId').val(); 

你的兩個樣本,因爲你格式化你的選擇符類似於如何name屬性沒有工作,但#前綴告訴jQuery尋找id屬性。

它可以選擇通過名稱的元素爲好,這應該是這樣的:

$('input[name="OrderItemViewModels[2].ProductId"]').val(); 

在你alert例子,你看到[Object object]因爲$語法jQuery是用於調用快捷方式jQuery函數。你真正在做的是:

jQuery('input[name="OrderItemViewModels[2].ProductId"]').val(); 

這只是一個普通的舊函數調用。 S是一個方便的速記。你正在調用一個函數並傳入一個字符串,這是jQuery將要評估的選擇器。

您的選擇器沒有返回任何內容,因爲它的格式不正確,所以您最終打印的是jQuery函數本身的.val()或值。直到你對jQuery的工作原理有一個很好的概念理解之前,這有點令人困惑。

爲了使您的選擇動態,只是字符串拼接在一起,周圍包含要選擇input數量的變量:

$('input[name="OrderItemViewModels[' + myVariable + '].ProductId"]').val(); 

這裏有一個jsFiddle,說明這兩個選項。

+0

好自身的實際ID選擇它,所以我認爲試圖通過名稱和ID查詢之間的誤差。但我仍然沒有得到我期望看到的任何一種方式。是的,我需要它是動態的('2'將以另一種方式取得並且已經起作用)。但我想我會試着首先得到這個工作,但事實並非如此。 – 2012-01-27 03:03:43

+0

更新了我的答案以解決您的問題。讓我知道你是否有更多。 :) – 2012-01-27 03:52:11

+0

我看到我的錯誤Josh。在錯誤的地方有一個括號。很好的答案。謝謝。 – 2012-01-27 03:56:16

0
$('input[name="OrderItemViewModels['+ index +'].ProductId"]').val(); // index = 0,1,2... 

OR

$('#OrderItemViewModels_'+ index +'__ProductId').val(); // index = 0,1,2... 
相關問題