基本的jQuery价格计算器促销代码黑客

时间:2014-02-04 12:25:00

标签: jquery calculator

我在页面上有一个基本的价格计算器,现在需要添加一个(非常基本的和非安全的)"促销代码"字段来打折总额。

我的HTML字段很重要:

<input type="text" id="Amount" /> <!-- the price amount field that gets updated via JS -->

<input type="text" id="promocode" /> <!-- promo code field -->

<input type="button" id="promoupdate" value="Update Price" /> <!-- button to click to update the Amount field -->

<select id="CAT_Custom_358914"> <!-- number of *additional* attendees to be paid for -->
    <option value="0">0</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
</select>

请注意,始终有一个默认与会者,因此从选择字段中选择任意数字只会将数字添加到1.如果我选择&#34; 3&#34;从选择字段来看,这意味着我有4个与会者。

现在,我的金额计算器目前为每位与会者添加了注册选项。效果很好:

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

   $('.calculator option:selected').each(function() {
      var m = /\[\$(\d+\.\d+)\]/.exec(this.value);

      if(m !== null) {
         total += +m[1];
      }
   });

   var decimalPart = (total - Math.floor(total)) * 100;

   $('#Amount').val(Math.floor(total) + '.' + (decimalPart < 10 ? '0' : '') + decimalPart);
});

你真的不需要知道每个&#34; .calculator&#34;字段看起来像,但万一你好奇:

<select name="CAT_Custom_359359" id="CAT_Custom_359359" class="cat_dropdown calculator">
    <option value=" ">-- Please select --</option>
    <option value="Friday and Saturday [$225.00] ($250 after Feb 17)">Friday and Saturday [$225.00] ($250 after Feb 17)</option>
    <option value="Friday Only [$125.00] ($135 after Feb 17)">Friday Only [$125.00] ($135 after Feb 17)</option>
    <option value="Saturday Only [$125.00] ($135 after Feb 17)">Saturday Only [$125.00] ($135 after Feb 17)</option>
</select>

我需要做的是:

  1. 当用户单击#promoupdate按钮时,jQuery会检查#promocode值是否等于&#34; PC123&#34;或&#34; PC321&#34;。
  2. 如果是,则#Amount应减少(#CAT_Custom_358914 + 1)* $ 100
  3. 如果没有,则提醒(&#34;那不是有效的促销代码&#34;)
  4. 请注意,用户可以在提交促销代码后对#CAT_Custom_358914进行更改,因此只要发生这种情况,促销代码折扣就会更新。我只是一个jQuery hack而且我目前的进展并不能真正解决对#CAT_Custom_358914的更改...

    $("#promoupdate").click(function(){
        if($("#promocode").value()=="PC123") {
            [modify #Amount]
        };
        elseif($("#promocode").value()=="PC321") {
            [modify #Amount]
        };
        else($("#promocode").value()=="[anything else]") {
            alert("That's not a valid promo code");
        };
    });
    

1 个答案:

答案 0 :(得分:1)

这对你有用吗?

FIDDLE

JS

var promocode;
var numberatt;
var pricing;
var total;
var finalprice;

$('#update').click(function(){
  promocode = $('#promocode').val();
  numberatt = $('#numberatt').val();
  pricing = $('#pricing').val();
  finalprice = numberatt * pricing;
    if (  (promocode == 'PC321') || (promocode == 'PC123') )
     {
       finalprice = +finalprice * 0.9;
      }
      else if ( promocode.length < 1)
        { 
         finalprice = +finalprice * 1;
         }
          else
           {
            alert("Invalid Promo Code");
            finalprice = 0;
            }
  $('.totaldiv').html( '$' + finalprice );
});