Javascript 用js实现表单增值
我正在尝试编写一个订单,自动显示所选项目的价值。后端已经完成,在前端的每个字段上,all radio/checkbox如下所示:Javascript 用js实现表单增值,javascript,jquery,forms,Javascript,Jquery,Forms,我正在尝试编写一个订单,自动显示所选项目的价值。后端已经完成,在前端的每个字段上,all radio/checkbox如下所示: <input type="radio" name="shirt-size" value="shirt_size_m[18]" /> function calculate_sum(form_id) { var $form = $(form_id); var sum = 0; $checkbox_and_radios = $form.find('
<input type="radio" name="shirt-size" value="shirt_size_m[18]" />
function calculate_sum(form_id) {
var $form = $(form_id);
var sum = 0;
$checkbox_and_radios = $form.find('input[type=checkbox], input[type=radio]').each(function(){
sum += parseInt($(this).val().match(/^[^\[]+\[(\d+)\]$/)[1]);
});
return sum;
}
$(function(){
$("#id_of_the_form").find('input[type=checkbox], input[type=radio]').change(function(){
var sum = calculate_sum("#form_id");
// I don't know the type of your element containing
// the sum, so I put multiple solutions here:
// some input element
$('#another_id').val(sum);
// or another element
$('#another_id').html(sum);
// I'm assuming you don't really mean append
// If you're sure you want to append: (but then the old value won't be deleted)
$('#another_id').append(sum);
});
});
“18”是价格,其他一切与前端价格计算无关。我无法更改命名约定,因此我需要获取页面上所有
的括号之间的值(或在父ID下方),将它们添加到一起(更新时),并将值附加到另一个ID。如果这使thongs更容易,那么Jquery已经在站点上使用
我只需要指出正确的方向,因为我的JS体验仅限于示例和小型定制:)尝试使用简单的正则表达式和Javascript,用空字符串替换所有非数字字符:
var str = "shirt_size_m[18]";
var theNumber = parseInt(str.replace(/[^0-9]/g, ''));
alert(theNumber);
演示:您可以使用:
var v;
v = $('#input-identifier').val();
v = v.split("[");
v = v[1];
v = v.split("]");
v = v[0];
//现在v有了数字您可以尝试以下方法:
<input type="radio" name="shirt-size" value="shirt_size_m[18]" />
function calculate_sum(form_id) {
var $form = $(form_id);
var sum = 0;
$checkbox_and_radios = $form.find('input[type=checkbox], input[type=radio]').each(function(){
sum += parseInt($(this).val().match(/^[^\[]+\[(\d+)\]$/)[1]);
});
return sum;
}
$(function(){
$("#id_of_the_form").find('input[type=checkbox], input[type=radio]').change(function(){
var sum = calculate_sum("#form_id");
// I don't know the type of your element containing
// the sum, so I put multiple solutions here:
// some input element
$('#another_id').val(sum);
// or another element
$('#another_id').html(sum);
// I'm assuming you don't really mean append
// If you're sure you want to append: (but then the old value won't be deleted)
$('#another_id').append(sum);
});
});
如果可能存在前导0,请使用parseInt(str.replace(/[^0-9]/g'),10)。parseInt的第二个参数本质上是要使用的数字系统。如果省略了它,并且有一个前导0,则parseInt将在十六进制(基数16)处解释它