Yii2:基于条件使用JQuery进行计算

时间:2015-03-24 16:47:43

标签: javascript php jquery ajax yii2

我的表单中包含ID为

的字段

#opdtestbill-health_card_number #opdtestbill-test_charges #opdtestbill-discount #opdtestbill-total_charges

现在我要做的是当health_card_number不为空时计算测试费用的折扣。即折扣字段和total_charges字段将自动填充。

test_charges字段通过ajax获取数据,而不是手动填充。

我已尝试过此代码,但我在折扣和total_charges中获得NaN

这是我的代码:

<?php
$this->registerJs("$('#opdtestbill-health_card_number').blur(function(){
        if( $(this).val() ) {
        var test_charges = parseInt($('#opdtestbill-test_charges').val());
        var discount = (test_charges*5)/100;
        var totalAmount = test_charges - discount;
        $('#opdtestbill-discount').val(discount);
        $('#opdtestbill-total_charges').val(totalAmount);  
         }else{        
        $('#opdtestbill-discount').val()=0; 
         } 
});"); 
?>

我对使用JQuery的想法不多,我们将非常感谢任何帮助。

我也尝试过只使用php,但它仅适用于更新,而不适用于新记录。 我正在使用的PHP代码就像 在我的模型

public function getHealthCardDiscount(){
        $discount=0;
        if (!empty($this->health_card_number)){
        $discount = ($this->test_charges *5)/100;
        }
        return $discount;
    }

并在 _form.php

$model->discount=$model->healthCardDiscount;

$model->total_charges=$model->test_charges - $model->healthCardDiscount;

感谢。

相关部分的HTML是这样的:

<div class="form-group field-opdtestbill-health_card_number">
<label class="control-label" for="opdtestbill-health_card_number">Health Crd. No.</label>
<input type="text" id="opdtestbill-health_card_number" class="form-control" name="OpdTestBill[health_card_number]" maxlength="15">

<div class="form-group field-opdtestbill-test_charges">
<label class="control-label" for="opdtestbill-test_charges">Test Charges</label>
<input type="text" id="opdtestbill-test_charges" class="form-control" name="OpdTestBill[test_charges]" maxlength="10">

<div class="form-group field-opdtestbill-discount">
<label class="control-label" for="opdtestbill-discount">Disct.</label>
<input type="text" id="opdtestbill-discount" class="form-control" name="OpdTestBill[discount]" maxlength="10">

<div class="form-group field-opdtestbill-total_charges">
<label class="control-label" for="opdtestbill-total_charges">Total Charges</label>
<input type="text" id="opdtestbill-total_charges" class="form-control" name="OpdTestBill[total_charges]" value="0" maxlength="10">

呈现Jquery

<script type="text/javascript">jQuery(document).ready(function () {
$('#opdtestbill-health_card_number').blur(function(){
        if( $(this).val() ) {
        var test_charges = parseInt($('#opdtestbill-test_charges').val());
        var discount = (test_charges*5)/100;
        var totalAmount = test_charges - discount;
        $('#opdtestbill-discount').val(discount);
        $('#opdtestbill-total_charges').val(totalAmount);  
         }else{        
        $('#opdtestbill-discount').val()=0; 
         } 
});

1 个答案:

答案 0 :(得分:1)

如果要将字符串转换为整数,可以使用:

var test = "10";
test = test - 0;

你在这个

中犯了错误

$('#opdtestbill-discount').val()=0;

我更改了您的js代码,请参阅http://jsfiddle.net/vitalik74/upLbpnmk/