You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery中输入框预设值时如何自动执行计算函数?

解决方案:PHP预设输入框初始值后自动触发计算逻辑

我明白你的问题——当输入框通过PHP预设初始值时,input事件不会自动触发,导致计算逻辑没法自动执行对吧?这是因为input事件只有用户手动修改输入框内容的时候才会被触发,页面加载时通过PHP填充的初始值并不会触发这个事件。

给你两个简单有效的解决办法,任选其一即可:

方法一:页面加载完成后直接调用calculate()函数

最直接的方式就是等DOM加载完成后,主动调用一次计算函数。只需要在你的jQuery代码末尾添加以下代码:

// 等DOM加载完成后执行计算
$(document).ready(function() {
    calculate();
});

// 或者更简洁的写法
$(calculate);

方法二:手动触发输入框的input事件

如果你希望模拟用户输入的行为(比如你的代码里还有其他依赖input事件的处理逻辑),可以手动触发输入框的input事件:

$(document).ready(function() {
    // 触发两个输入框的input事件,自动执行calculate()
    $('#principal, #interest').trigger('input');
});

完整修改后的代码示例

这里是整合了解决方案后的完整代码,你可以直接参考:

JavaScript 代码

$('#principal, #interest').on('input', function() { calculate(); });

function calculate(){
    var principal = $('#principal').val();
    principal = principal.replace(/,/g, "");
    principal = parseInt(principal);
    
    var interest = $('#interest').val();
    interest = interest.replace(/,/g, "");
    interest = parseInt(interest);
    
    var total = "";
    var total_interest = "";
    
    if(isNaN(interest) || isNaN(principal)){
        total_interest = " ";
        total = " ";
    } else{
        total_interest = (interest / 100) * principal;
        total = (interest / 100) * principal + principal;
    }
    
    var num = total;
    num = addCommas(num);
    $('#total').val(num);
    
    var num_interest = total_interest;
    num_interest = addCommas(num_interest);
    $('#total_interest').val(num_interest);
    
    function addCommas(nStr) {
        nStr += '';
        x = nStr.split('.');
        x1 = x[0];
        x2 = x.length > 1 ? '.' + x[1] : '';
        var rgx = /(\d+)(\d{3})/;
        while (rgx.test(x1)) {
            x1 = x1.replace(rgx, '$1' + ',' + '$2');
        }
        return x1 + x2;
    }
}

$('.number').keyup(function(event){
    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40) return;
    
    // format number
    $(this).val(function(index, value) {
        return value
        .replace(/\D/g, "")
        .replace(/\B(?=(\d{3})+(?!\d))/g, ",");
    });
});

// 页面加载完成后自动执行计算(核心解决代码)
$(document).ready(function() {
    calculate();
});

HTML 代码(含PHP预设值)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

Principal: <input class="form-control number" name="principal" id="principal" type="text" value="<?php print $fetch['principal']; ?>" required/> <br><br>
Interest: <input class="form-control number" name="interest" id="interest" type="text" value="<?php print $fetch['interest']; ?>" required/> <br><br>
Total Interest: <input class="form-control number" name="total_interest" id="total_interest" type="text" readonly/> <br><br>
Total Payment <input class="form-control number" name="total" id="total" type="text" readonly/>

这样修改后,不管输入框是手动输入还是PHP预设初始值,页面加载完成后都会自动执行计算逻辑,无需用户手动点击或编辑输入框。

内容的提问来源于stack exchange,提问作者user8486381

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:02:21