我一直试图解决这个问题。我试图获取嵌套循环内的表单输入的值。但它的未定义。知道为什么会这样吗?非常感谢您的帮助。这是代码,例如。
我正在获得$(#fund-no-"+f).attr('value')
的价值而没有任何问题。它$("#year-" + year_amt + "-" + f).attr('value')
我无法检索。它未定义。如果我使用$("#year-" + year_amt + "-" + f).val()
代替我根本没有任何价值。
var fund_datastring;
fund_datastring = "";
if(fundqty >0)
{
for(var f =1; f <= fundqty; f++)
{
fund_datastring += "&fund_no_" + f + "=" + $("#fund-no-" + f).attr('value') ;
var fundyear_datastring = "";
var hidden_fundid = $("#hidden-fund-id-"+f).attr('value');
var year_amt=2;
//for(var year_amt =2; year_amt < hidden_fundid; year_amt++)
while (year_amt < hidden_fundid)
{
fundyear_datastring += "&hidden_fund_"+f+ "=" + hidden_fundid + "&fund_"+ f +"_amount_"+ year_amt + "=" + $("#year-" + year_amt + "-" + f).attr('value') + "&fund_"+ f +"_year_"+ year_amt + "=" + year_amt;
year_amt++
}
hidden_fundid = "";
}
}
<div class="fsFieldHorizontal">
<input type="text" value="" class="fsField" size="32" name="year_1_1" id="year-1-1">
<input type="hidden" value="4" id="hidden-fund-id-1">
<a onclick="addFundForm(this); return false;" id="add-year-1" href="#">
<img alt="Add Year" src="images/add_16.png">
</a><br><br>
<div id="year-container-1">
<div id="year-2-1" style="margin: 5px 0px;">
<input type="text" value="" class="fsField" size="32" name="year_2_1" id="year-2-1">
<a onclick="removeFundYear("#year-2-1"); return false;" href="#">
<img alt="Remove Year 2" src="images/cancel_16.png">
</a><br>
<label for="year-2-1" class="fsSupporting">Year 2 Amount</label>
</div>
<div id="year-3-1" style="margin: 5px 0px;">
<input type="text" value="" class="fsField" size="32" name="year_3_1" id="year-3-1">
<a onclick="removeFundYear("#year-3-1"); return false;" href="#">
<img alt="Remove Year 3" src="images/cancel_16.png">
</a><br>
<label for="year-3-1" class="fsSupporting">Year 3 Amount</label>
</div>
</div>
</div>
答案 0 :(得分:4)
更新2
正如我在下面所怀疑的那样,你的身份证并不是唯一的:你有这两个:
<div id="year-2-1" style="margin: 5px 0px;">
而且:
<input type="text" value="" class="fsField" size="32" name="year_2_1" id="year-2-1">
jQuery可能找到第一个,当然没有value
。
更新1
根据您的描述,最可能的情况是您没有ID为year-2-1
的元素(在第一遍中)等等 - 或者您有多个这样的元素(这是无效的,因此是不可预测的)。因为从根本上说,如果DOM是正确的,它就可以工作:http://jsbin.com/icume3如果没有带有该ID的元素,你就会得到你所描述的内容:http://jsbin.com/icume3/2
旧的,显然不正确的答案 (在多个方面):
你没有显示你的标记,但我的猜测是.val()
正在.attr("value")
不工作,因为你正在处理一个没有{{1}的表单元素属性,类似于 (见下文)。 value
.val
获取元素的值,该值取决于它是什么类型的元素。
编辑:显然jQuery在select
处理“值”,至少在attr
处理,至少在我尝试的浏览器上(包括IE6,所以):{ {3}}所以不是那样。