Jquery:从异步创建的文本框中获取值?

时间:2013-05-09 09:57:38

标签: javascript jquery

好的,因为问题不明确我已经更新如下:

我正在将CSV文件上传到服务器,它解析csv并获取Amount列的值,然后准备一个包含金额的文本框的html。然后将生成的html传递给javascript,javascript输出包含值的文本框的完整html。

通过ajax调用返回html的服务器代码:

foreach($amounts as $val){ 
    $html .+ '<input type="text" class="inputText" value="'.$val['amount'].'"/>';
}
echo $html;

输出html(在generateHtml()函数内部)的Jquery代码:

$('#amtblock').html(html);

html结果:

<div id="amtblock">
    <input type="text" class="inputText" value="3"/>
<input type="text" class="inputText" value="78"/>
<input type="text" class="inputText" value="12"/>
<input type="text" class="inputText" value="21"/>
<input type="text" class="inputText" value="89"/>
<input type="text" class="inputText" value="22"/>
<input type="text" class="inputText" value="222"/>
</div>

现在,当我尝试通过此代码获取所有文本框值时(在calculateAmount()函数内):

$('.inputText').each(function() {
    total += Number($(this).val());     
});
上面的代码中未打印

total。我想计算总数并显示它。 如何获取和设置我动态创建的元素的值?

2 个答案:

答案 0 :(得分:1)

使用AJAX调用创建元素时,请记住它们是异步创建的。这意味着在AJAX调用完成之前将触发在AJAX调用之后触发的函数。

为了考虑从AJAX调用创建的DOM元素,您必须等到调用完成。

在您的情况下,您需要确保在创建输入后触发calculateAmount()函数。您可以在calculateAmount()之后将generateHtml()放在$('#amtblock').html(html);函数内来完成此操作。

答案 1 :(得分:0)

抱歉编辑,我还没有看到所有代码,这应该对你有用

total=0;
$(document).ready(function(){
  total=0;
  $('.inputText').each(function() {
      val_to_add=$(this).val() || 0
      total += parseInt(val_to_add);     
      console.log(total);
   });
});

在jsfiddle上试试:http://jsfiddle.net/Ugwx5/2/