这是我的代码如下。 您可以点击“添加更多”按钮动态添加字段。如果需要,也可以删除字段。 我需要乘以输入值并获得连续字段乘法结果的总和。 我如何在Jquery中实现这一目标?
<div class="my-form">
<form name="form" >
<p class="text-box">
<select name="size[]" id="box1">
<option value="20">20</option>
<option value="35">35</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
x
<input name="qty[]" id="box2" type="text" value="" />
= <input name="multiply[]" id="answer" type="text" value="" />
<a class="add-box" href="#">Add More</a>
</p>
<input type="submit" value="Submit" />
</form>
</div>
Grand Total: <span class="GrandTotal">0.00</span><br/><br/>
<script>
jQuery(document).ready(function($){
$('.my-form .add-box').click(function(){
var n = $('.text-box').length + 1;
if( 10 < n ) {
alert('Stop it!');
return false;
}
var box_html = $('<p class="text-box"> <select name="size[]" id="box1' + n + '"> <option value="20">20</option> <option value="35">35</option> <option value="50">50</option> <option value="100">100</option> </select> x <input type="text" name="qty[]" value="" id="box2' + n + '" /> = <input name="multiply[]" id="answer' + n + '" value="" /> <a href="#" class="remove-box">Remove</a></p>');
jQuery('#my-form').append(box_html);
box_html.hide();
$('.my-form p.text-box:last').after(box_html);
box_html.fadeIn('slow');
return false;
});
$('.my-form').on('click', '.remove-box', function(){
$(this).parent().css( 'background-color', '#FF6C6C' );
$(this).parent().fadeOut("slow", function() {
$(this).remove();
$('.box-number').each(function(index){
$(this).text( index + 1 );
});
});
return false;
});
});
</script>
答案 0 :(得分:1)
所以这就是你必须做的事情:
1)不使用id
属性,最好使用class
属性来简化jQuery ..
<select name="size[]" id="box1" class="box1"> <option value="20">20</option> <option value="35">35</option> <option value="50">50</option> <option value="100">100</option> </select> x <input name="qty[]" id="box2" class="box2" type="text" value="" /> = <input name="multiply[]" id="answer" class="answer" type="text" value="" />
注意:不要忘记更改Add More
功能..
2)以下是您计算总数的方法,这是通过更改<input>
或<select>
function calTotal(){ var total = 0; $(".my-form .text-box .answer").each(function(){ total += Number($(this).val()); }); $(".GrandTotal").text(""); $(".GrandTotal").text(total); } $(".my-form").on('input', '.box2', function(){ var total_row = $(this).val(); total_row *= $(this).siblings(".box1").val(); $(this).siblings(".answer").val(total_row); calTotal(); }); $(".my-form").on('change', '.box1', function(){ var total_row = $(this).val(); total_row *= $(this).siblings(".box2").val(); $(this).siblings(".answer").val(total_row); calTotal(); });
查看此Fiddle ..