2010-07-03 48 views
1

我正在尝试编写一个自动显示所选项目的值的订单。后端已经完成,并在前端的每个字段,所有无线电/复选框,如下所示:表格附加值与js

<input type="radio" name="shirt-size" value="shirt_size_m[18]" /> 

“18”是价格,其它一切无关的前端价格计算。我无法更改命名约定,所以我需要获取页面上所有<input>的括号中的值(或在父ID下面),将它们添加到一起(更新时),并将该值附加到另一个ID。如果这使得皮带更容易,jquery已经在网站上使用。

我只需要在正确的方向指向我的JS经验仅限于实例和未成年人的自定义:)

回答

2

尝试使用与JavaScript的replace,一个简单的正则表达式来替换所有非数字字符空字符串:

var str = "shirt_size_m[18]"; 
var theNumber = parseInt(str.replace(/[^0-9]/g, '')); 
alert(theNumber); 

演示:http://jsfiddle.net/XvTaY/1/

+0

如果有可能的话有可能是0领先,使用parseInt函数(str.replace(/ [^0-9]/g,''),10)。 parseInt的第二个参数基本上是要使用的数字系统。如果它被忽略,并且有一个前导0,parseInt将以十六进制(基数为16)解释它, – 2010-07-09 01:56:14

0

u可以使用:

var v; 
v = $('#input-identifier').val(); 

v = v.split("["); 
v = v[1]; 
v = v.split("]"); 
v = v[0]; 

//现在V具有数

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); 
    }); 
});