我无法选择隐藏的表单字段值,该值是具有相同名称的隐藏表单字段值数组的一部分。这是数组的一个元素:
<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 :(得分: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,说明了这两个选项。
答案 1 :(得分:0)
$('input[name="OrderItemViewModels['+ index +'].ProductId"]').val(); // index = 0,1,2...
OR
$('#OrderItemViewModels_'+ index +'__ProductId').val(); // index = 0,1,2...