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

Full Calendar换行问题求助:textarea输入换行引发JS语法错误

问题分析

核心问题是PHP输出带换行的字符串到JS时未转义,导致JS语法错误。当$booking->notes包含换行符时,直接用'{{ $booking->notes }}'输出会让JS字符串出现物理换行,违反JS语法规则,触发Uncaught SyntaxError,进而导致FullCalendar崩溃。

解决方案

1. 修复JS字符串转义问题

修改FullCalendar事件定义中的content字段,用PHP的json_encode()处理带换行的字符串,确保输出到JS的内容是合法的字符串:

events : [
    @foreach($bookings as $booking)
    {
        bookingId : '{{ $booking->id }}',
        title : '{{ $booking->booking_contact }}',
        start : '{{ $booking->booking_start }}',
        end: '{{ $booking->booking_end }}',
        content : {!! json_encode($booking->notes) !!}, // 改用json_encode处理
    },
    @endforeach
],
  • 用{!! !!}替代{{ }}:{{ }}会转义HTML实体(比如把"变成"),而json_encode()已经生成了符合JS规范的字符串,不需要额外HTML转义。
  • json_encode()会自动将字符串中的换行符\n转义为\\n,同时处理引号等其他特殊字符,确保JS能正确解析。

2. 正确处理数据库存储与显示

  • 存储阶段:直接保存textarea提交的原始内容(保留\n换行符),不要提前用nl2br()处理。nl2br()是用于HTML显示时将换行转换为<br>标签的,不应在存储阶段使用。
  • HTML显示阶段:如果需要在非textarea的HTML区域显示带换行的内容,再调用nl2br()转换,示例:
{{ nl2br($booking->notes) }}

3. 验证效果

修改后,JS生成的content字段会是类似这样的合法字符串:

content : "Arriving at 19.20pm\nDeparting at 20.05pm\n1075 euros cash on arrival....",

FullCalendar能正常解析事件数据,不会崩溃;同时$('#notes').val(calEvent.content)会自动将\n转换为textarea中的换行,保留原始格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 06:05:21