2017-01-05 10 views
1

私は2つの入力を持っています。ユーザーのタイプはwidthheightです(mm単位)。したがって、最低価格はwidth=50height=20まで250ドルです。次に、幅または高さを10mm編集するたびに合計価格を25ドル引き上げたいと考えています。したがって、w=60 and h=20(またはw=50/h=30)の場合、合計は$ 275になります。 $ 300からw=60 and h=30 ...石炭価格はparseIntに基づいています

は今私の貧弱なjqueryの知識を持って、私はこのモンスターを手動で設定するここでhttps://jsfiddle.net/fkqotzzb/

var basePrice = 250; 
 
var priceForSm = 50; 
 
var price300 = basePrice + priceForSm; 
 
var price450 = price300 + (priceForSm * 3); 
 
var price700 = price450 + (priceForSm * 5); 
 
var price950 = price700 + (priceForSm * 5); 
 

 
$("#stwidth, #stheight").keyup(function() { 
 

 
\t var stwidth = parseInt($("#stwidth").val(), 10); 
 
\t var stheight = parseInt($("#stheight").val(), 10); 
 

 
\t if (stwidth > 113) { 
 
\t \t $("#stwidth").val("113"); 
 
\t } 
 
    
 
    if (stheight > 62) { 
 
\t \t $("#stheight").val("62"); 
 
\t } 
 

 
\t if (stwidth >= 50 && stheight >= 20 || stwidth >= 110 && stheight >= 10) { 
 
\t \t $(".stamp-full-price span").html(basePrice); 
 

 
\t } 
 

 
\t if (stwidth >= 30 && stheight >= 60 || stwidth == 80 && stheight == 20 || stwidth >= 60 && stheight >= 30 || stwidth >= 40 && stheight >= 40) { 
 
\t \t $(".stamp-full-price span").html(price300); 
 
\t } 
 

 
\t if (stwidth >= 110 && stheight >= 20 || stwidth >= 110 && stheight == 30 || stwidth >= 70 && stheight >= 30 || stwidth >= 60 && stheight >= 40 || stwidth >= 50 && stheight >= 50 || stwidth >= 40 && stheight >= 60) { 
 
\t \t $(".stamp-full-price span").html(price450); 
 
\t } 
 

 
\t if (stwidth >= 110 && stheight >= 40 || stwidth >= 110 && stheight >= 50 || stwidth >= 90 && stheight >= 40 || stwidth >= 80 && stheight >= 50 || stwidth >= 60 && stheight >= 60) { 
 
\t \t $(".stamp-full-price span").html(price700); 
 
\t } 
 

 
\t if (stwidth >= 100 && stheight >= 60 || stwidth >= 111 && stheight >= 50) { 
 
\t \t $(".stamp-full-price span").html(price950); 
 
\t } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" name="stwidth" id="stwidth" value="50" class="form-control input-xs" maxlength="3"> x <input type="text" name="stheight" id="stheight" value="20" class="form-control input-xs" maxlength="2"> мм 
 

 
<div class="stamp-full-price"> 
 
    Total: <span>250</span> 
 
</div>

価格とサイズを作ったが、私は設定したくないときそのため、価格をwidthheightで別々に調整するのはいいかもしれません。 ケースのすべてのサイズをカバーしているわけではないので、特定の状況でどの価格が表示されるのか予測できず、本当にモンスターです。

ラジオやチェックボックスのサイズの後に、次のオプションもあります。だから、ラジオ/チェックボックスの価格を追加するために定義されたサイズの後に合計価格の価値を得る方法は?

+3

質問(フィドルにだけではなくリンク) – happymacarts

+0

であなたのコードを貼り付けもう一つの解決策は、ありますディメンションに基づいて価格を計算する必要がある数式それをイベントハンドラの関数に追加する – happymacarts

+0

@LukasLiesis、私はあまりにも速く読んだ:(私は寝るつもりです!スレッドをクリーンアップするために私のOrigのコメントを削除します – happymacarts

答えて

0

あなたはすでにちょうど数学を作り、幅/高さを取得する方法を発見し、すべての余分な10のための$ 25で価格をインクリメントしたいていながら:

var stwidth = parseInt($("#stwidth").val(), 10); 
var stheight = parseInt($("#stheight").val(), 10); 

var price = 250; 

if(stwidth > 50) { 
    price += 25 * Math.ceil((stwidth - 50)/10) 
} 

if(stheight > 20) { 
    price += 25 * Math.ceil((stheight - 20)/10) 
} 

$(".stamp-full-price span").html(price); 

あなたが似たような状況にあるときは常に数学を作ってみます紙の上でどのように数えるか、もっと早く学び、それをやり遂げる方が簡単かもしれません。いくつかの値の価格を数える方法をすべて書き留めて、一部の部分を変数に置き換えるだけで済みます。

+0

ちょうど私が必要でした。 –

+0

'if(checked){price + = X}'をもう1つ追加するか、チェックしたときに$ 25ではなく他の値をインクリメントしたい場合は、変数を25にして値を変更してから計算する –

0

ここで最高のシナリオが把握である丸みを帯びた値に基づいて計算価格

var basePrice = 250; 
 
var baseW = 50; 
 
var baseH = 20; 
 

 
$("#stwidth, #stheight").keyup(function() { 
 
\t var stwidth = parseInt($("#stwidth").val(), 10); 
 
\t var stheight = parseInt($("#stheight").val(), 10); 
 

 
\t var dW = (stwidth - baseW) > 0 ? Math.round((stwidth - baseW)/10) : 0; 
 
\t var dH = (stheight - baseH) > 0 ? Math.round((stheight - baseH)/10) : 0; 
 
     var price = basePrice + dW*25 +dH*25; 
 
     $(".stamp-full-price span").html(price); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" name="stwidth" id="stwidth" value="50" class="form-control input-xs" maxlength="3"> x 
 
<input type="text" name="stheight" id="stheight" value="20" class="form-control input-xs" maxlength="2"> мм 
 

 
<div class="stamp-full-price"> 
 
    Total: <span>250</span> 
 
</div>

+0

いくつかのシナリオで切り捨てるラウンド関数を使用しているため、正解について私の答えをチェックするので、これは間違っています。それはすでに50ドルになるはずですが、すでに25ドル増額しているはずです –

+0

あなたの答えをありがとう! –

+0

@ LukasLiesis、確かにMath.ceilははるかに良いラウンドに適合します。数学を使う。それはほぼ正しいと計算された。 – Banzay

関連する問題