0

私は、顧客がドロップダウン リストから購入するアイテムの量を選択できる Web ショップに取り組んでいます。onChange各アイテムにはポイント値があり、jQuery (イベント)を介して購入の合計を計算します。

function showPoints(itemPointValue, ddlAmount){
    var customerPoints = parseInt($('p#points').html());
    currentPoints = customerPoints - (ddlAmount * itemPointValue);
    $('p#points').html(currentPoints);
}//showPoints     

ここでの唯一の問題は、たとえば 5 から 4 に金額を変更した場合、さらに 4 * ポイント値が「合計ポイント」から差し引かれることです。それらの合計ポイントは完全に不正確になり、0 を下回ることさえありますjquery.data。「oldValue」変数を設定するために使用することを考えましたが、IE はこれをサポートしていません。助言がありますか?

4

4 に答える 4

2

上記のようにカスタム属性に以前の値を保存し、フォーカス イベントを使用して古い値を設定できます。次の行の何かが機能するはずです。

$('p#points').on('focus', function () {
    $(this).attr('old-value', $(this).val();
});
于 2012-11-23T10:47:52.063 に答える
0

ドロップダウン リストで 2 つのイベントを使用して、この問題を解決しました。onClick で jquery.data を使用して古いデータを保存し、onChange で古い値と新しい値を照合します。新しい値が古い値より小さい場合は、それに応じてポイントの合計を調整します。

HTML:

<select name="dropdown onClick="saveOld(this.value, this.name)" onchange="showPoints(points, this.value,this.name)">

JS/Jクエリ

function showPoints(pointCategory, ddlAmount, name){
    old = jQuery.data(document.body,name);
    var Points = parseInt($('p#points').html());
    if(old > ddlAmount){
       diff =  old - ddlAmount;
       currentPoints = Points + (diff * pointCategory);
    }else{
       currentPoints = Points - (ddlAmount * pointCategory);
    }
    $('p#points').html(currentPoints);
}//showPoints

function saveOld(oldAmount, name){
    $(document.body).data(name,oldAmount);
}//saveOld

回答ありがとうございます。

于 2012-11-23T12:14:53.657 に答える
0

ドロップダウンが変更されるたびに合計ポイント コストを再計算し、customerPoints から新しい合計を引いて currentPoints を再計算しないのはなぜですか? これは、私には、値の加算と減算よりもはるかにクリーンなソリューションのように思えます

于 2012-11-23T09:05:10.463 に答える
0

要素にカスタム属性を作成するのはどうですか:

$('p#points').attr('old-value',5);

次のように取得します。

$('p#points').attr('old-value');

于 2012-11-23T09:09:16.253 に答える