Laravel master layout布局模板中Form表单无法正常工作问题求助
可能的故障原因及排查方案
- JS全局拦截问题
你的布局文件末尾引入了@include('include.script'),绝大多数后台模板都会在公共JS里默认绑定表单提交事件,做全局的AJAX提交处理或者表单验证拦截,会主动阻止表单的默认提交行为。单独跑表单代码时没有引入这些JS所以正常,继承布局后触发了拦截逻辑。
排查方法:暂时注释掉布局文件里的@include('include.script')代码,再测试表单是否可以正常提交。如果可以提交,就去公共JS文件里查找有没有绑定form的submit事件且调用了e.preventDefault()的逻辑,针对性调整即可。 - HTML结构嵌套错误
检查渲染后的完整页面源码,确认两个问题:- 你的form标签是否完整,有没有被布局里未闭合的标签截断,导致提交按钮不在form标签范围内
- 是否存在form标签嵌套的情况,HTML规范不允许form嵌套,内层的form会无法触发提交
- 样式覆盖问题
布局自带的样式可能存在浮动、定位层级问题,导致提交按钮被其他透明元素覆盖,你点击的时候实际没有触发到提交按钮的点击事件。可以右键点击提交按钮,选择「检查」,看当前选中的元素是不是你的input[type=submit],如果不是就调整对应元素的z-index或者定位规则即可。 - 路由与CSRF校验问题
确认渲染后的form表单action属性是否和你预期的路由地址一致,同时检查form内部是否正常渲染了_token的隐藏域,避免CSRF校验拦截导致的提交失败。
内容的提问来源于stack exchange,提问作者user14550163
相关产品推荐
相关产品推荐

