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

Laravel Blade中如何在标记内传递脚本变量调用函数?

解决方案

1. 对齐函数名称与选择器

你Blade模板里调用的formatDatepickerTermination函数在现有脚本中不存在,先把现有formatDatepickerFilter函数重命名并替换目标选择器,适配你的终止日期输入框:

function formatDatepickerTermination(date) {
    flatpickr(".format-datepicker-terminate-note", {
        altInput: true,
        altFormat: 'Y-m-d',
        dateFormat: 'Y-m-d',
        allowInput: false,
        minDate: date, // 传入目标日期作为最小可选值
        onChange: (selectedDates, dateStr, instance) => {
            if (instance.element?._x_model) {
                instance.element._x_model.set(dateStr);
            }
        },
        onClose: (selectedDates, dateStr, instance) => {
            if (instance.element?._x_model) {
                instance.element._x_model.set(dateStr);
            }
        }
    });
}

2. 正确传递日期参数(两种方案)

方案一:移除全局变量(推荐)

全局变量容易引发作用域问题,直接在打开模态框时传入日期参数并初始化选择器:

function terminateNote(date) {
    $('#terminate-note-form').modal();
    // 等待模态框渲染完成后初始化,避免DOM未加载
    setTimeout(() => formatDatepickerTermination(date), 100);
}

同时修改Blade模板,移除不需要的x-init:

<div id="terminate-note-form">
    <x-input class="w-full format-datepicker date_picker_icon format-datepicker-terminate-note" 
             name="end_date" 
             id="end_date" />
</div>

方案二:保留全局变量(不推荐)

如果必须使用全局变量,先声明全局作用域的ter_date,并在x-init中明确引用:

// 全局声明变量
let ter_date;

function terminateNote(date) {
    ter_date = date;
    $('#terminate-note-form').modal();
}

修改Blade模板的x-init:

<div id="terminate-note-form">
    <x-input class="w-full format-datepicker date_picker_icon format-datepicker-terminate-note" 
             name="end_date" 
             id="end_date"
             x-init="formatDatepickerTermination(window.ter_date)" />
</div>

关键注意点

  • 确保flatpickr资源已正确引入项目
  • 模态框初始化后需等待DOM渲染完成再调用日期选择器初始化,否则会出现元素找不到的问题
  • 优先使用参数传递替代全局变量,减少代码耦合

内容的提问来源于stack exchange,提问作者RA.IBOY

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 10:38:25