2010-07-03 83 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); 
    }); 
});