2012-06-25 41 views
2

請注意,這不是我的代碼或表單中的實際代碼。這只是我的測試版本,但確實代表我想要做的事情。如何取消選中表單元素時減去javascript變量的值

考慮下面的代碼,我怎麼能拿到劇本減去傳遞的值時,該複選框處於未選中狀態:

<!DOCTYPE html> 
<html lang="en"> 

    <head> 
     <title>form test</title> 
     <script type="text/javascript" charset="utf-8" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script> 
     <script type="text/javascript"> 
      function updateAmount(amount) { 
       parseInt(amount); 
       if ($('#amount').val()) { 
        parseInt(amount); 
        amount = amount + parseInt($('#amount').val()); 
       } 
       $('#amount').val(amount); 
       alert('Amount: ' + $('#amount').val()); 
      } 
     </script> 
    </head> 

    <body> 
     <form action="" method="post" name="form-test"> 
      <input onclick="updateAmount(150)" class="inputbox" id="reservationfee0" 
      value="Registration Fee" type="checkbox" /> 
      <strong>$150</strong>Reservation Fee</form> 
    </body> 

</html> 

因爲它的立場,誰就編碼功能並沒有考慮到人們可能在提交表單之前(在提交之前包含更多字段和添加到金額變量中的其他數字)之前,請選中並取消選中該複選框。由於這個原因,有幾個關於過度收費的報道,所以我需要弄清楚如何阻止它發生,但我對javascript/jquery瞭解甚少。

+0

你想如果未選中減去150,並添加150的檢查是什麼時候? – Wiz

+1

您在示例中錯誤地使用了parseInt。此外,您正在引用ID爲'amount'的元素,但在您的示例中不存在這樣的元素。 – j08691

回答

2

嘗試:

function updateAmount(amount) { 
    $amount = $('#amount'); // cache for later use 
    if ($('#reservationfee0').is(':checked')) { 
     $amount.val(parseInt($amount.val(), 10) + amount); 
    } else { 
     $amount.val(parseInt($amount.val(), 10) - amount); 
    } 
}​ 

Working example here如果checkbox使用.is()如果是,則量加到當前值檢查

此檢查如果不是它的減去。

還要注意的是parseInt需要第二個參數 - radix其建議你包括這個值是一定的成績的... docs for parseInt here

+1

這個,有一些額外的mods與其餘的實際形式一起工作,完美地解決了這個問題。謝謝! –

0

你可以試試這個

 function updateAmount(amount) { 
      parseInt(amount); 
      if ($('#reservationfee0').prop('checked')) { 
       amount = amount + parseFloat($('#amount').val()); 
      } 
     else{ 
       amount = parseFloat($('#amount').val())-amount; 
     } 
      $('#amount').val(amount); 
      alert('Amount: ' + $('#amount').val()); 
     } 
0

我們可以做的是,僅定義我們可以首次設置上面的函數的變量。代碼去如下:

 var chk=1; 
     function updateAmount(amount) { 
      parseInt(amount); 
      if ($('#amount').val() && document.getElementById('reservationfee0').checked && chk==1) { 
       chk=0; 
       parseInt(amount); 
       amount = amount + parseInt($('#amount').val()); 
      } 
      $('#amount').val(amount); 
      alert('Amount: ' + $('#amount').val()); 
     } 
相關問題