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

Laravel Livewire必填字段失焦时实时验证异常求助

问题

使用Laravel Livewire原生实时表单验证时,希望实现必填字段未输入内容就失焦时触发验证,但当前配置的required规则未按预期工作——仅在输入空格或字符数不足时min规则生效,未输入内容失焦时不会显示“必填项”错误提示。

模板代码

<input 
    type="text" 
    wire:model.blur="card_name" 
    id="card_name" 
    name="card_name" 
    autocomplete="" 
    required
    class="block w-full rounded-md shadow-sm border-gray-30 focus:ring-governor-bay-500 focus:border-governor-bay-500 sm:text-sm 
@error('card_name') border-red-600 @else border-gray-300 @enderror"               
>

组件验证代码

#[Rule([
    'card_name' => 'required|min:5',
], message: [
    'required' => 'Name on card is required.',
    'min' => 'Name on card is too short.',
], attribute: [
    'Name on cards.*' => 'Name on card',
])]
public $card_name = [];
修复方案

问题出在两个关键错误上,修正后即可实现需求:

  • 修正字段类型:将$card_name的初始值从数组[]改为空字符串''。因为输入框是文本类型,绑定到数组字段会导致Livewire对required规则的判断逻辑异常——空数组不会触发required错误,而空字符串会在失焦时触发验证。
    修改后的组件字段定义:

    public $card_name = '';
    
  • 修正属性映射:#[Rule]的attribute数组里的键值错误,应该对应字段名card_name,而不是数组通配符Name on cards.*,确保错误提示的属性名称正确匹配。
    修改后的验证属性配置:

attribute: [
'card_name' => 'Name on card',
]

完成以上修改后,当用户未输入内容就失焦该字段时,Livewire会触发`required`规则验证,并显示对应的错误提示。

内容的提问来源于stack exchange,提问作者Justin
相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:18:32