如何在jQuery中计算值?

如何在jQuery中计算值?,jquery,element,attr,Jquery,Element,Attr,我有个小问题是小提琴: 现在,第一行输入的脚本工作,我必须为其他元素更改什么?我想我可以用这个,但我不知道怎么用。有人能帮我吗?你能帮我吗 $('body').on("change",'.val1, .val2',function (event) { var val1,val2; if($(this).is(".val1")){ val1=$(this); val2=val1.parent().children(".val2"); } else{ val2=$(this)

我有个小问题是小提琴:

现在,第一行输入的脚本工作,我必须为其他元素更改什么?我想我可以用这个,但我不知道怎么用。有人能帮我吗?

你能帮我吗

$('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);

});      

你能试试这个吗

 $('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);
});

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

 totalQuantity = parseFloat($("#all").text());
 totalQuantity = isNaN(totalQuantity) ? 0 : totalQuantity;

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

可以在这里找到动态表单的示例用法

我将下面的代码上载到此地址:


瓦尔1
瓦尔2

这里是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>

$form=$('#form').calx();
$('#addElement')。在('click',函数(){
var lastElem=$('.position').last();
var newElem=lastElem.clone();
var数据=最新要素数据(“id”);
数据=数据+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'+数据).attr('data-formula','$A'+数据+'+$B'+数据);
$('#all').attr('data-formula','SUM($C1,$C'+data+'));
newElem.insertAfter(lastElem);
$form.calx('refresh');
});

您的类选择器当前仅拾取该类的第一个元素。您需要使用
来查找正在更改的
.val
。非常好,非常感谢您和rest的回复。我很高兴它对你有用。你能批准这个答案吗。谢谢这是我要找的剧本。伟大的我有一个问题,我编译到我的表格,但这只是第一行的工作。感谢您的回复。您在core.js中遗漏了一些内容,在主html中键入$('#faktura').calx();,但是在core.js中键入$('#form#faktura').calx();,它应该引用相同的表单,只需替换$form=$(“#form#faktura”).calx();为$form=$(“#faktura”);在第18行,它应该可以工作感谢我更改了答案,但没有结果我只是试图在本地重现问题,请尝试使用更新您的calx脚本
<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>
<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>