Blade模板输入框placeholder仅在删除输入内容后才显示问题排查
问题根因
你代码中input标签的value属性存在多余前置空格:
value=" {{ request()->get('s') }}"
双引号和Blade输出大括号之间的空格会被直接渲染到HTML中,就算request()->get('s')返回空值,最终输入框的value属性值也会是一个空格,并非空字符串。浏览器会认为输入框已经有内容,因此不会触发placeholder显示。当你手动清空输入框内容时,会把这个默认的空格也删掉,value变为真正的空值,placeholder就正常显示了。
修复方案
- 直接删除value属性中双引号与大括号之间的空格即可:
<input placeholder="place" type="text" id="s" name="s" value="{{ request()->get('s') }}" class="mb-2 w-full h-full bg-white bg-opacity-95 rounded focus:ring-2 border border-gray-300 focus:border-indigo-500 text-base outline-none text-gray-700 py-1 px-3 leading-8"> - 更规范的Blade写法可以搭配
old()函数保留表单提交后的历史输入,避免跳转回页面时输入内容丢失:value="{{ old('s', request()->get('s')) }}" - 如果需要过滤用户输入前后的多余空格,可以加上
trim()处理:value="{{ trim(request()->get('s', '')) }}"
修复完成后刷新页面,右键查看页面源代码确认input的value属性在无搜索参数时为空,即可验证问题已解决。
内容的提问来源于stack exchange,提问作者Frevelman
相关产品推荐
相关产品推荐

