Yii2:根据条件使用JQuery计算
Yii2: Calculation using JQuery based on condition
我有一个表单,其中的字段 ID 类似于
#opdtestbill-health_card_number
#opdtestbill-test_charges
#opdtestbill-discount
#opdtestbill-total_charges
现在我要做的是当 health_card_number 不为空时计算测试费用的折扣。那就是折扣字段,total_charges 字段会自动填写。
test_charges字段是通过ajax获取数据,没有手动填写。
我试过这个代码,但我得到了 NaN
的折扣和 total_charges。
这是我的代码:
<?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;
}
});
如果你想将字符串转换成整数,你可以这样使用:
var test = "10";
test = test - 0;
而你在这方面犯了错误
$('#opdtestbill-discount').val()=0;
我有一个表单,其中的字段 ID 类似于
#opdtestbill-health_card_number
#opdtestbill-test_charges
#opdtestbill-discount
#opdtestbill-total_charges
现在我要做的是当 health_card_number 不为空时计算测试费用的折扣。那就是折扣字段,total_charges 字段会自动填写。
test_charges字段是通过ajax获取数据,没有手动填写。
我试过这个代码,但我得到了 NaN
的折扣和 total_charges。
这是我的代码:
<?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;
}
});
如果你想将字符串转换成整数,你可以这样使用:
var test = "10";
test = test - 0;
而你在这方面犯了错误
$('#opdtestbill-discount').val()=0;