1

一連の選択メニューを使用して、jQuery でライブ価格見積もりフォームを作成しています。以下のコードを思いつきました。これは、各選択メニューからデフォルト値を取得し、それらを一緒に追加します。

$(document).ready(function(){
 $('select > option:selected').each(function() {
  var value = $(this).attr('label');

  total = parseFloat(total) + parseFloat(value);
  total = total.toFixed(2);
 });
 printTotal(total); // prints the total price
});

唯一の問題は、これがページの読み込み時にのみ機能することです。いずれかの選択メニュー (6 つあります) で新しい値が選択されるたびに価格が更新されるようにしたいと思います。

$("select").change(function () { ... }をトリガーに追加しようとしましたが (サンプルコード hereに示すように)、選択メニューごとにすべての値が追加されます (つまり、合計は本来あるべきものの 6 倍です)。

ドキュメントを検索しましたが、使用するイベントがわかりません。誰でも助けることができますか?

役立つ場合の HTML サンプル:

<select id="colors">
 <option label="25.00" value="XYZ">1 color</option>
 <option label="50.50" value="ABC">2 colors</option>
 <option label="75.75" value="MNO">3 colors</option>
</select>
4

2 に答える 2

1

マット、私はそれを理解したので、あなたは私の心の中で何かを引き起こしたと思います-少なくとも、それは今のところうまくいきます.

これを行うコードは次のとおりです。

$(document).ready(function(){
    $('select').change(function() {
        var total = 0;
        $('select > option:selected').each(function() {
            var value = $(this).attr('label');

            total = parseFloat(total) + parseFloat(value);
            total = total.toFixed(2);
        });
        printTotal(total);
    });
});

var total = 0ピースの配置に行き着きました。これは、新しい選択が行われるたびにリセットする必要があります。

于 2009-10-15T02:26:02.450 に答える
0

呼び出し内でテストするときは、クリックした要素のコンテキスト内で schangeを検索していることを確認する必要があります。optionselect

$('select').change(function() {
    var total = 0;

    // note the second parameter passed to the $() function below
    $('option:selected', $(this)).each(function() {
        var value = $(this).attr('label');
        total += parseFloat(value).toFixed(2);
    });
    printTotal(total);
});
于 2009-10-14T06:57:22.543 に答える