监听表单提交事件
在 jQuery 中,可以使用如下两种方式,监听到表单的提交事件:
- $('#form1').submit(function(e) {
- alert('监听到了表单的提交事件')
- })
-
- $('#form1').on('submit', function(e) {
- alert('监听到了表单的提交事件')
- })
阻止表单默认提交行为

就是点击表单之后,会默认跳转action对应的url
当监听到表单的提交事件以后,可以调用事件对象的 event.preventDefault() 函数,来阻止表单的提交和页面的跳转,示例代码如下:
- $('#form1').submit(function(e) {
- // 阻止表单的提交和页面的跳转
- e.preventDefault()
- })
-
- $('#form1').on('submit', function(e) {
- // 阻止表单的提交和页面的跳转
- e.preventDefault()
- })
快速获取表单中的数据
1. serialize()函数
为了简化表单中数据的获取操作,jQuery 提供了 serialize() 函数,其语法格式如下:
$(selector).serialize()
serialize() 函数的好处:可以一次性获取到表单中的所有的数据。
2. serialize()函数示例
- <form id="form1">
- <input type="text" name="username" />
- <input type="password" name="password" />
- <button type="submit">提交</button>
- </form>
- $('#form1').serialize()
- // 调用的结果:
- // username=用户名的值&password=密码的值
注意:在使用 serialize() 函数快速获取表单数据时,必须为每个表单元素添加 name 属性!

案例 - 评论列表


为什么会是反的,这是因为浮动的原因
外观搭建 
获取评论列表
- function getCmtList() {
- $.get('http://www.liulongbin.top:3006/api/cmtlist', function (res) {
- if(res.status !== 200) {
- return alert('获取评论列表失败!')
- }
- var rows = []
- $.each(res.data, function (i, item) { // 循环拼接字符串
- rows.push('
- '
+ item.content +'评论时间:'+ item.time +'评论人:'+ item.username +'') - })
- $('#cmt-list').empty().append(rows.join('')) // 渲染列表的UI结构
- })
- }
console.log( $('#cmt-list').html());
发表评论
- $('#formAddCmt').submit(function(e) {
- e.preventDefault() // 阻止表单的默认提交行为
- // 快速得到表单中的数据
- var data = $(this).serialize()
- $.post('http://www.liulongbin.top:3006/api/addcmt', data, function(res) {
- if (res.status !== 201) {
- return alert('发表评论失败!')
- }
- // 刷新评论列表
- getCmtList()
- // 快速清空表单内容
- $('#formAddCmt')[0].reset()
- })
- })

完整代码
- function getCommentList() {
- $.ajax({
- method: 'GET',
- url: 'http://www.liulongbin.top:3006/api/cmtlist',
- success: function (res) {
- if (res.status !== 200) return alert('获取评论列表失败!')
- var rows = []
- $.each(res.data, function (i, item) {
- var str = '
- 评论时间:' + item.time + '评论人:' + item.username + ''
+ item.content + '' - rows.push(str)
- })
- $('#cmt-list').empty().append(rows.join(''))
- // console.log( $('#cmt-list').html());
- }
- })
- }
-
- getCommentList()
- $(function(){
- $('#formAddCmt').submit(function(e){
- e.preventDefault();
- var data=$(this).serialize();
- // console.log(data);
- $.post('http://www.liulongbin.top:3006/api/addcmt', data, function(res) {
- if (res.status !== 201) {
- return alert('发表评论失败!')
- }
- // 刷新一下表单
- getCommentList();
- // 清空表单
- $('#formAddCmt')[0].reset()
- })
- })})
- <!DOCTYPE html>
- <html lang="en">
-
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <meta http-equiv="X-UA-Compatible" content="ie=edge">
- <title>Document</title>
- <link rel="stylesheet" href="./lib/bootstrap.css" />
- <script src="./lib/jquery.js"></script>
- <script src="./js/cmt.js"></script>
- </head>
- <body style="padding: 15px;">
- <!-- 评论面板 -->
- <div class="panel panel-primary">
- <div class="panel-heading">
- <h3 class="panel-title">发表评论</h3>
- </div>
- <form class="panel-body" id="formAddCmt">
- <div>评论人:</div>
- <input type="text" class="form-control" name="username" autocomplete="off" />
- <div>评论内容:</div>
- <textarea class="form-control" name="content"></textarea>
-
- <button type="submit" class="btn btn-primary">发表评论</button>
- </form>
- </div>
-
- <!-- 评论列表 -->
- <!-- 列表组快速生成 -->
-
- <!-- 评论列表 -->
- <ul class="list-group" id="cmt-list">
- <li class="list-group-item">
- <span class="badge" style="background-color: #F0AD4E;">评论时间:</span>
- <span class="badge" style="background-color: #5BC0DE;">评论人:</span>
- Item 1
- </li>
- </ul>
-
- </body>
- </html>
注意的一点,如果没有返回值可能是导入出现问题,要./如果直接lib有可能会失效