-2

過去5日間試していますが、まだわかりません。

ここにフォームがあります

Number of people attending input field<input id="persons" value="1" />

<input type="radio" name="cake1" value="cake1">choose Cake 1 radio button<br>
<input type="radio" name="cake2" value="cake2">choose Cake 2 radio button

<p class="totals" id="subtotal">Total: input field</p>

だから私が必要なのは、誰かが参加者の数を入れれば、合計フィールドにどれだけの費用がかかるかを示すことです.

合計金額は、選んだケーキと人数によって異なります。つまり、ケーキ #1 は 6 人 = 25 ドルですが、7 人を入れる場合は、12 人分の料金 = 45 ドルを請求する必要があります。

彼らがケーキ#2を選ぶ場合、価格は異なる価格になります

誰かが私を助けてくれることを願っています。

Cake #1
Persons     Price
6    ppl =  25.00 $
12   ppl =  45.00 $
24   ppl =  85.00 $
48   ppl =  120.00 $
60   ppl =  140.00 $
80   ppl =  160.00 $

Cake #2
Persons     Price
6    ppl =  30.00 $
12   ppl =  54.00 $
24   ppl =  96.00 $
36   ppl =  135.00 $
48   ppl =  160.00 $
60   ppl =  170.00 $
80   ppl =  200.00 $
100  ppl =  240.00 $
120  ppl =  276.00 $
4

3 に答える 3

0

このようなことを試してください

HTML

<input id="numPeople" value="1" name="numPeople" />

<input type="radio" name="cakeType" value="cake1" />Cake 1<br />
<input type="radio" name="cakeType" value="cake2" />Cake 2

<input type="submit" name="go" id="go" value="Calculate Price" />
<p class="totals" id="subtotal">Total: <span></span></p>

jQuery(JSのみの可能性がありますが、ほとんどの人はすでにjQueryを持っています)

// These objects must be ordered by number of persons - {numPpl: price, ...}
cake1 = {6: 25, 12: 45, ... };
cake2 = {6: 30, 12: 54, ... };

// Set the string cake name to the actual array
cakes = {"cake1":cake1, "cake2":cake2};

// fn looks through price arrays, returns price based on number of people
function getPrice(people, cake) {
    for (var p in cakes[cake]) {
        if (p>=people) return cakes[cake][p];
    }
};

$("#go").click(function(){
    var n = $("#numPeople").val(),
        c = $("input[name=cakeType]:checked").val(),
        out = (typeof n == "undefined" || typeof c == "undefined"
               ? "Please select a cake type and enter the number of people attending"
               : "$" + getPrice(n, c) );
    $("#subtotal span").text( out );
});

http://jsfiddle.net/daCrosby/4sv4T/

アップデート

送信ボタンなしで更新するには、 に変更$("#go").click$("#numPeople, input[name=cakeType]").changeます。

私の間違い、上記のgetPrice関数は文字列として比較しようとppeopleます-整数としてある必要があります。また、正しい答えがあるときにループを停止しました。更新されたものは次のとおりです。

// fn looks through price arrays, returns price based on number of people
function getPrice(people, cake) {
    var out = "";
    for (var p in cakes[cake]) {
        if (parseInt(p) >= parseInt(people)) {
            out = cakes[cake][p];
            break;
        }
    }
    return out;
};

http://jsfiddle.net/daCrosby/4sv4T/1/

于 2013-05-12T06:25:53.130 に答える
0

これはあなたが探しているものですか?

// This objects must be ordered by number of persons
cake1 = {6: 25, 12: 45, 24: 85, 48: 120, 60: 140, 80: 160};

var getPrice = function (people, cake) {
    for (var p in cake) {
        if (p>=people) return cake[p];
    }
};

// Example
console.log(getPrice(7, cake1))
于 2013-05-12T05:50:21.607 に答える