我有一个小问题这是小提琴:http: //jsfiddle.net/LK7Tj/3/
var result = parseFloat($(".val1").val()) + parseFloat($(".val2").val());
现在脚本适用于第一行输入,我必须为其他元素更改什么?我想我可以使用(这个),但我不知道如何。有人可以帮我吗?
我有一个小问题这是小提琴:http: //jsfiddle.net/LK7Tj/3/
var result = parseFloat($(".val1").val()) + parseFloat($(".val2").val());
现在脚本适用于第一行输入,我必须为其他元素更改什么?我想我可以使用(这个),但我不知道如何。有人可以帮我吗?
我已经开发了一个插件来适应这种计算,如果它帮助你试试这个
可以在此处找到动态表单的示例用法
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>
你能试试这个吗
$('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;
你可以做
$('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);
});