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

如何使用jQuery trigger.click传递变量重新打开Bootstrap模态框

解决方案

问题原因

你当前使用trigger('click')无法正常生效的核心原因是:Bootstrap模态框的show.bs.modal事件依赖event.relatedTarget属性获取触发元素,而jQuery模拟的点击事件不会自动填充该属性,导致你的回调函数无法拿到表格行的自定义数据,无法完成表单填充。

方案1:最小改动适配(推荐)

直接调用Bootstrap模态框的原生show方法,手动传入目标行作为触发源,不需要模拟点击,原有模态框事件回调逻辑完全不需要修改:

修改PHP错误触发部分代码:

<?php if (session()->has('error_message')) : ?>
<script>
// 选中目标表格行
const targetTr = $('#j<?= old('job_no') ?>');
// 手动触发模态框显示,第二个参数传入触发元素作为relatedTarget
$('#myModal').modal('show', targetTr[0]);
</script>
<?php endif ?>

方案2:抽离公共函数(可维护性更高)

把模态框填充逻辑抽为独立公共函数,不管是用户点击还是错误回填都可以直接调用,逻辑更清晰:

1. 修改前端JS逻辑

// 抽离公共模态框填充函数
function fillModal(trElem) {
    const client_name = trElem.data('cln');
    const location = trElem.data('loc') ;
    const descr = trElem.data('des');
    
    const modal = $('<?= lang($lang.'.modaltarget') ?>');
    modal.find('.modal-body #client_name').val(client_name);
    modal.find('.modal-body #location').val(location);
    modal.find('.modal-body #descr').val(descr);

    modal.find('#body_message').hide();
    modal.find('#body_content').show();
}

// 原有模态框触发回调保留,调用公共函数
$('<?= lang($lang.'.modaltarget') ?>').on('show.bs.modal', function (event) {
    const tr = $(event.relatedTarget);
    fillModal(tr);
});

2. 修改PHP错误触发部分代码

<?php if (session()->has('error_message')) : ?>
<script>
const targetTr = $('#j<?= old('job_no') ?>');
// 直接调用填充函数再打开模态框即可
fillModal(targetTr);
$('#myModal').modal('show');
</script>
<?php endif ?>

注意事项

请确保old('job_no')返回值和表格行ID的后缀匹配,比如行ID为j422时old('job_no')需返回422,否则选择器无法定位到目标行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:18:01