2015-06-02 47 views
1

使用I確認的圖書館我有一個基本的HTML:
I確認金額和減去值

<form> 
    <input type="radio" name="pks" value="1"> 
    <input type="radio" name="pks" value="2"> 
    <input type="radio" name="pks" value="3"> 
    <hr> 
    <input type="checkbox" name="op1" value="10"> 
    <input type="checkbox" name="op2" value="20"> 
    <input type="checkbox" name="op3" value="30"> 
    <input type="checkbox" name="op4" value="40"> 
</form> 

於是我有我的jQuery:

$('input[name="pks"]').on('ifChecked', function(e) { 
    var $pkss = $(this).val(); 
    $('input[type="checkbox"]').on('ifChecked', function(ev) { 
     var $ops = $(this).val(); 
     sum = parseFloat($pkss) + parseFloat($ops); 
     // alert(sum); 
     $('#tt').text(sum) 
    }); 
    $('input[type="checkbox"]').on('ifUnchecked', function(ev) { 
     var $ops = $(this).val(); 
     sum = parseFloat($pkss) - parseFloat($ops); 
     // alert(sum); 
     $('#tt').text(sum) 
    }); 

}); 

我試圖做到的是非常簡單,但沒有使用iCheck,但是由於我正在學習這個庫,並且沒有使用iCheck進行這種操作的文檔(我找不到任何文檔),所以我需要將收音機輸入的值「求和」到複選框
i f無線電輸入1被選中然後值爲1,然後檢查是否已經檢查了複選框如果是,然後將該值與已經檢查的單選按鈕相加:
like:1radio + 10checkbox = 11,所以11是我的結果但如果:
2radio + 10checkbox + 40checkbox then = 52 ... correct ?,但是如果用戶取消選中其中一個複選框,然後減去該值...用上面的代碼的孩子,有點工作......我設法將一個無線電和一個複選框相加,但是如果我選擇另一個單選按鈕,它將不會執行任何操作,除非我選擇另一個複選框,但它會忽略第一個複選框,而當我取消選擇複選框時,它會給我錯誤的結果... I不能使用iCheck工作...

回答

0

最簡單的方法來實現這一點是有一個單一的功能上運行無線電和複選框輸入的。然後該函數將總計所有選定元素的值,而不是從存儲的總和中添加/刪除當前值。使用

$(':radio, :checkbox').change(updateTotal); 

function updateTotal() { 
    var total = 0; 
    $(':radio:checked, :checkbox:checked').each(function() { 
     total += parseInt(this.value); 
    }); 
    console.log(total); 
} 

Example fiddle

+0

是啊,這做到了,我缺的是** ** ifChanged代碼中的第一個象應該是行'$(':

試試這個電臺, :複選框')。on('ifChanged',updateTotal);'和其餘保持不變,現在正在工作!謝謝! – Tanker