0

我有一个小问题这是小提琴:http: //jsfiddle.net/LK7Tj/3/

var result = parseFloat($(".val1").val()) + parseFloat($(".val2").val());

现在脚本适用于第一行输入,我必须为其他元素更改什么?我想我可以使用(这个),但我不知道如何。有人可以帮我吗?

4

3 回答 3

1

我已经开发了一个插件来适应这种计算,如果它帮助你试试这个

http://www.xsanisty.com/calx/

可以在此处找到动态表单的示例用法

http://prototype.xsanisty.com/calx/sample/calx_with_dynamic_form.html

我将下面的代码上传到这个地址: http: //prototype.xsanisty.com/calx/sample/sample.html

<form id="form"> 
    <a id="addElement" class="addElement" href="#">Add element</a>

    <div class="position" data-id="1">
        <label for="title">val1</label>
        <input type="text" name="val1[]" class="val1" id="A1">
        <label for="title">val2</label>
        <input type="text" name="val1[]" class="val2" id="B1">

        <span id="C1" class="val3" data-formula="$A1+$B1"></span> 
    </div>

    <p id="all" data-formula="$C1"></p> 
</form>

这是js部分

<script>
$form = $('#form').calx();

$('#addElement').on('click', function () {
    var lastElem = $('.position').last();
    var newElem = lastElem.clone();
    var data = lastElem.data("id");
    data = data + 1;

    newElem.attr('data-id',data);
    newElem.find('.val1').attr('id','A'+data).val('');
    newElem.find('.val2').attr('id','B'+data).val('');
    newElem.find('.val3').attr('id','C'+data).attr('data-formula','$A'+data+'+$B'+data);
    $('#all').attr('data-formula','SUM($C1,$C'+data+')');

    newElem.insertAfter(lastElem);

    $form.calx('refresh');
});
</script>
于 2013-06-21T05:44:10.530 回答
0

你能试试这个吗

 $('form').on('change','.val1, .val2',function (event) {
   var result = parseFloat($(this).next("span").text());
   result = isNaN(result) ? 0 : result;
   result = parseFloat($(this).val()) + result;
   $(this).nextAll('span').first().text(result.toFixed(2));
   totalQuantity += parseFloat($(this).val());
   $('p').text(totalQuantity);
});

http://jsfiddle.net/LK7Tj/9/

如果您仅将 totalQuantity 变量用于此目的,那么您应该使用它并像这样使用

 totalQuantity = parseFloat($("#all").text());
 totalQuantity = isNaN(totalQuantity) ? 0 : totalQuantity;
于 2013-06-20T15:42:17.793 回答
0

你可以做

$('body').on("change",'.val1, .val2',function (event) {
var val1,val2;
if($(this).is(".val1")){
    val1=$(this);
    val2=val1.parent().children(".val2");
}
else{
    val2=$(this);
    val1=val2.parent().children(".val1");
}

    var result = parseFloat(val1.val()) + parseFloat(val2.val());
    result = isNaN(result) ? 0 : result;
    $(this).parent().children('span').text(result.toFixed(2));
    totalQuantity += result;
    $('p').text(totalQuantity);

});      

http://jsfiddle.net/LK7Tj/8/

于 2013-06-20T15:14:50.887 回答