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

页面加载及下拉框切换时触发输入框值修改的问题排查

解决页面加载时未触发select初始状态逻辑的问题

你的代码在select选项切换时能正常执行,但页面加载时不会触发对应逻辑,核心原因是**onchange事件仅在用户手动切换选项时触发**,页面初始化时默认选中的选项不会自动触发该事件。即使把代码包裹在$(document).ready()中,若没有主动调用处理函数,初始状态的逻辑依然不会执行。

解决方案

在DOM加载完成后,主动调用一次hotelCheck函数,传入当前的select元素,即可初始化输入框的状态。

修改后的完整代码

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select onchange="hotelCheck(this);">
    <option value="2">Hotel 1</option>
    <option value="3">Hotel 2</option>
    <option value="4">Hotel 3</option>
    <option value="1" selected>No Hotel</option>
</select>
<input type="text" id="decimal">

<script>
function hotelCheck(that) {
    if (that.value == "1") {
        $('#decimal').val('0.00');
        $("#decimal").prop('disabled', true);
    } else {
        $("#decimal").prop('disabled', false);
    }
}

$(document).ready(function() {
    // 页面加载时主动执行一次,初始化状态
    hotelCheck($('select')[0]);
});
</script>

补充说明

如果更倾向于使用jQuery的事件绑定方式替代原生onchange属性,也可以改成以下写法(效果一致):

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="hotelSelect">
    <option value="2">Hotel 1</option>
    <option value="3">Hotel 2</option>
    <option value="4">Hotel 3</option>
    <option value="1" selected>No Hotel</option>
</select>
<input type="text" id="decimal">

<script>
$(document).ready(function() {
    function hotelCheck(that) {
        if (that.value == "1") {
            $('#decimal').val('0.00');
            $("#decimal").prop('disabled', true);
        } else {
            $("#decimal").prop('disabled', false);
        }
    }

    // 绑定change事件
    $('#hotelSelect').on('change', function() {
        hotelCheck(this);
    });

    // 初始化触发
    hotelCheck($('#hotelSelect')[0]);
});
</script>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 05:08:21