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

Laravel 8 下拉选择自动填充 空选项时费用字段重置为0

Laravel 8 下拉联动选择空选项时自动填充0修复方案

问题根因

选中下拉框默认空选项时,获取到的选项值为空字符串:

  • 发起Ajax请求后,后端BiayaPelayaran::find(空值)会返回null
  • 原有前端逻辑仅在接口返回值不为null时才更新输入框内容,因此空选项场景下不会触发字段更新,输入框会保留上一次选中航线时填充的费用值

修复步骤

1. 优化前端JavaScript逻辑(优先推荐)

选中空选项时直接重置字段,无需发起无效的Ajax请求,同时增加接口返回空值的兜底逻辑,修改后代码如下:

$('#biaya_pelayaran_id').change(function() {
    var id = $(this).val();
    // 选中默认空选项时直接重置费用为0,终止后续请求
    if (!id) {
        $('#biaya_kapal').val(0);
        return;
    }
    var url = '{{ route('getBiayaPelayaran', ':id') }}';
    url = url.replace(':id', id);
    $.ajax({
        url: url,
        type: 'get',
        dataType: 'json',
        success: function(response) {
            if (response !== null) {
                $('#biaya_kapal').val(response.biaya_pelayaran);
            } else {
                // 接口查询不到数据时兜底重置为0
                $('#biaya_kapal').val(0);
            }
        }
    });
});

2. 后端接口兼容优化(可选,增强鲁棒性)

调整控制器方法,对空id、查询不到数据的场景做统一返回,避免前端异常:

public function getBiayaPelayaran($id = 0)
{
    // 空id场景直接返回费用0
    if (empty($id)) {
        return response()->json(['biaya_pelayaran' => 0]);
    }
    $data = BiayaPelayaran::find($id);
    // 航线不存在时兜底返回0
    if (!$data) {
        return response()->json(['biaya_pelayaran' => 0]);
    }
    return response()->json($data);
}

验证效果

  • 选择具体航线时,保持原有逻辑,biaya_kapal字段自动填充对应航线的费用值
  • 重新选择默认空选项「Cari Rute Pelayaran」时,biaya_kapal字段自动重置为0

内容的提问来源于stack exchange,提问作者Arya Rizky Sandi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 07:18:30