Layui如何实现表单提交成功后重置表单并保持页面不刷新

幻夢星雲

幻夢星雲

2026-07-31

770人浏览

原创

表单提交成功后重置并保持页面不刷新,关键在三点:阻止默认提交行为、正确清空所有控件状态(包括非原生组件)、手动触发ui同步渲染;layui的select、laydate、switch等为dom模拟渲染,原生reset无效,须用form.val()配合form.render()及实例方法(如setvalue)逐项处理,并确保submit监听中return false或e.preventdefault()。

表单提交成功后重置并保持页面不刷新,关键在三点:阻止默认提交行为、正确清空所有控件状态(包括非原生组件)、手动触发 ui 同步渲染。漏掉任意一点,都会出现“看着清空了,但日期框还留着值”或“下拉选项没变”之类的问题。

为什么 form.reset()$("#form")[0].reset() 不行

Layui 的 selectlaydateswitchcheckbox 都是用 DOM 模拟渲染的,原生 reset 只作用于 input/textarea/select 原生标签,对这些封装后的 UI 状态完全无效。

  • laydate 输入框的 value 属性和内部实例的日期值是分开维护的
  • select 的选中状态由 Layui 内部缓存控制,DOM 的 selected 属性可能已同步,但下拉面板 UI 不更新
  • switch 和多选 checkbox 的 checked 状态需手动设 + form.render() 才能反映到 UI

form.val() 清空必须配 form.render()

form.val("filterName", {}) 是 Layui 官方推荐方式,但它只改数据层,不自动重绘 UI —— 必须紧跟 form.render()form.render("select") 等指定类型。

  • 确保表单有 lay-filter="searchForm"(不是 id),否则 form.val() 找不到目标
  • 表单容器必须带 class="layui-form",否则 form.render() 无效果
  • 如果字段 HTML 里写了 value="默认值"form.val() 不会覆盖它,得先手动 $("#field").val("")
  • 对日期字段,还得额外调 laydateIns.setValue(""),否则日历面板仍显示旧值

监听 submit 时必须 return falsee.preventDefault()

哪怕你把所有字段都清空了,只要没阻止默认行为,浏览器就会走原生提交流程:GET 跳转、POST 刷新,一切白干。

表单提交波浪按钮
表单提交波浪按钮

一个表单按钮特效,提交时按钮内会出现波浪填充反馈。 从下载体验看,它的优势在于文件清晰、没有外部依赖、可以直接用浏览器打开。用户可以先阅读本文了解实现方式,再进入演示页体验真实交互。

下载
  • 错误写法:form.on('submit(filter)', function(data){ $.post(...); }); —— 缺 return false,必定刷新
  • 正确写法:回调末尾加 return false;,或第一行写 e.preventDefault();(注意 event 参数要声明)
  • 如果用了 $.ajaxfetch,务必在 success 回调里再执行清空逻辑,别放在异步外层
  • 别在回调里抛未捕获异常,JS 报错会导致 return false 失效,页面照常刷新

搜索区域重置按钮要防隐式提交

表格上方的搜索表单常嵌在 <form class="layui-form"></form> 里,这时候一个没设 type<button>重置</button> 在 Chrome/Firefox 中默认是 type="submit",点一下就触发表单提交。

  • 必须显式写成:<button type="button" id="resetBtn">重置</button>
  • 点击后除了清空表单,还要同步清空表格的 where 参数,否则 table.reload() 时条件还在
  • 示例:table.reload("tableId", { where: {}, page: { curr: 1 } });
  • 如果用了 laydate 实例,记得保存引用并在重置时调 ins.setValue("")

最容易被忽略的是:日期组件的双重状态、重置按钮的 type 属性、以及异步成功回调里才执行清空 —— 这三处出问题,80% 的“清空失败”就发生了。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

1086

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

2210

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

2104

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

2275

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

334

5

ajax教程
ajax教程

php中文网为大家带来ajax教程合集,Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。php中文网还为大家带来ajax的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.14

1095

4

ajax中文乱码解决方法
ajax中文乱码解决方法

ajax中文乱码解决方法有设置请求头部的字符编码、在服务器端设置响应头部的字符编码和使用encodeURIComponent对中文进行编码。本专题为大家提供ajax中文乱码相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.31

317

5

ajax传递中文乱码怎么办
ajax传递中文乱码怎么办

ajax传递中文乱码的解决办法:1、设置统一的编码方式;2、服务器端编码;3、客户端解码;4、设置HTTP响应头;5、使用JSON格式。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.15

993

5

ajax网站有哪些
ajax网站有哪些

使用ajax的网站有谷歌、维基百科、脸书、纽约时报、亚马逊、stackoverflow、twitter、hacker news、shopify和basecamp等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.09.24

890

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ThinkPHP配置开发与CMS后台实战
ThinkPHP配置开发与CMS后台实战

共87课时 | 11.4万人学习

第二十三期_综合实战
第二十三期_综合实战

共89课时 | 9.7万人学习

Layui 快速入门精讲
Layui 快速入门精讲

共5课时 | 1.5万人学习