嵌套循环中的输入值未定义 - jquery

时间:2010-10-14 21:52:46

标签: jquery loops input nested undefined

我一直试图解决这个问题。我试图获取嵌套循环内的表单输入的值。但它的未定义。知道为什么会这样吗?非常感谢您的帮助。这是代码,例如。

我正在获得$(#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>

1 个答案:

答案 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}}所以不是那样。