我正在尝试编写一个自动显示所选项目值的订单。后端已经完成,在前端每个字段,所有收音机/复选框,如下所示:
<input type="radio" name="shirt-size" value="shirt_size_m[18]" />
'18'是价格,其他一切与前端价格计算无关。我无法更改命名约定,因此我需要获取页面上所有<input>
(或父ID下方)括号之间的值,将它们一起添加(更新时),并将值附加到另一个身份证Jquery已经在网站上使用,如果这样可以使丁字裤更容易。
我只需指出正确的方向,因为我的JS经验仅限于示例和次要的自定义:)
答案 0 :(得分:2)
尝试使用带有Javascript replace
的简单正则表达式,用空字符串替换所有非数字字符:
var str = "shirt_size_m[18]";
var theNumber = parseInt(str.replace(/[^0-9]/g, ''));
alert(theNumber);
答案 1 :(得分:1)
您可以尝试这样的事情:
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);
});
});
答案 2 :(得分:0)
var v;
v = $('#input-identifier').val();
v = v.split("[");
v = v[1];
v = v.split("]");
v = v[0];
// now v的数字为