添加jQuery每个生成的输入值一起

时间:2012-12-10 14:39:59

标签: jquery each

我正在尝试将生成的输入字段的值连接在一起,以便可以通过电子邮件发送。

jsfiddle:http://jsfiddle.net/dawidvdh/NZy53/

代码在这里:

JavaScript的:

$(document).ready(function() {
    var pass = 1;
    val = 0;
    jQuery('div.passport').each(function() {
        var index = "pass"+pass++;
        var passer = "<input class='pass' id="+'"'+index+'"'+" "+"/>";
        var passvalue = $(this).attr('value');
        jQuery(passer).appendTo('#pass');

        jQuery('#dup').click(function(){
        calc(passvalue);
        });
    });

    function calc(passvalue) {
        console.log(passvalue);
    };
});

然后HTML:

<div id="pass"></div>
<div class="passport"></div>
<div class="passport"></div>
<div class="passport"></div>
<div class="passport"></div>
<div class="passport"></div>
<div class="passport"></div>
<div class="passport"></div>
<button id="dup">duplicate</button>

任何帮助都非常赞赏......

1 个答案:

答案 0 :(得分:0)

我将您的代码更改为

$(document).ready(function() {
    var pass = 1;
    val = 0;
    jQuery('div.passport').each(function() {
       var index = "pass"+pass++;
       var passer = "<input class='pass' id="+'"'+index+'"'+" "+"/>";
       var passvalue = $(this).attr('value');
       jQuery(passer).appendTo('#pass');
    });
    $(document).on('click', '#dup', calc);

    function calc() {
      var passValue = 0;
      $('.pass').each(function(){ var v=parseFloat($(this).val()); if(v) passValue+=v});
      console.log(passValue);
    };
});​

It works (open the console to see the sum of all fields)

主要变化:

  • 使用on,我可以说当你点击按钮时只调用一次calc函数
  • 我解析了字段的值,如果是NaN
  • 我就不添加值