私は、ユーザーがajaxを使用して動的にチケットを追加または削除できるオーダーフォームを持っています(ネストされたフォームの場合はrailscast#197と同様です)。各チケットはチケット価格(ルビーインスタンス変数 - @ event.ticket_price)をクラス 'price'で表示します。jQueryを使用したidによる動的要素の合計/減算
私が見つかりました。私はクラスの価格 "を持つ要素を合計し、これは、合計金額を生成
$('#total_price').html(function() {
var a = 0;
$(".price").each(function() {
a += parseInt($(this).html());
});
return a;
});
ID「TOTAL_PRICE」とdiv要素に結果を表示するようになって別の場所にスニペットとき追加チケットリンクページが最初に読み込まれたときには何も表示されません(デフォルトでは1つのチケットの価格が必要です)。また、チケットが削除されたときには、そのチケットの価格を合計から引く機能が必要です。 最後に、私は価格がドルであることを望んでいますが、これを行うときにNaNを取得すると、正規表現が必要なのでしょうか?
レールが新しく、jqueryに新しい機能が追加されました。ありがとうございました!最初の質問については
削除チケット機能
function remove_fields(link) {
$(link).prev("input[type=hidden]").val("1");
$(link).closest(".fields").hide();
}
追加チケット機能
function add_fields(link, association, content) {
var new_id = new Date().getTime();
var regexp = new RegExp("new_" + association, "g")
$(link).parent().before(content.replace(regexp, new_id));
}
関数をonloadで呼び出す代わりに、jQuery準備関数を使用する必要があります。 '$(displayPrice());' – Clayton
Thanks @ Claytonは質問に関連する関数を含めるように編集しました。何をすべきかまだ分かっていない回答を評価してください。正規表現では、レールヘルパーのnumber_to_currencyを使って10.5を 'price'の$ 10.50としてレンダリングしていましたが、これはjquery関数のNaNを引き起こします。 –
@Mick Ruaneそれぞれの '.price'値の前に$記号がある場合は、値を解析する前にそれを削除する必要があります。 '$(this).html()。replace(/ [^ 0-9。]/g、 '');'を実行してください。また、値が整数でない場合は、 'parseFloat()'を使いたいでしょう。 – Clayton