问题:列表页面,搜索按钮点击后整体页面重新加载。
问题代码: 前后端没分离项目
搜索框整体使用form标签包裹。提交按钮在form标签内。
<div class="form-group pull-right" style="padding-right: 15px">
<button class="btn btn-chognzhi pull-right margin-left btn-sm" onclick="clearForm()">重置</button>
<button class="btn btn-primary pull-right btn-sm" onclick="reload()">查询</button>
</div>
排查:
点击查询按钮,整体页面刷新,没有执行查询中的搜索请求。
form标签的action属性,action的属性设置的空。
排查按钮为啥没有触发绑定的onclick事件。
问了同事,说可能是button默认的type导致的。
Submit是专门用于提交表单的Button,与Button的区别主要有两点:
type=button 就单纯是按钮功能
type=submit 是发送表单
(1)Submit将表单提交(form.submit())作为其onclick后的默认事件,Button并非如此
(2)表单提交时,所有具有name属性的html输入元素(包括input标签、button标签、select标签等)都将作为键值对提交,除了Submit对象。Submit对象只有在自己被单击后的提交中才会作为键值对被提交。
submit会有一个跳转,页面会刷新;而button不会刷新,就是一个button
button按钮的默认type是submit,当type是submit的时候会触发action。
当前form中action为空,所以直接跳转当前页面,导致搜索按钮点击,页面重新加载一遍。
正确代码:
添加上type="button"
<div class="form-group pull-right" style="padding-right: 15px">
<button class="btn btn-chognzhi pull-right margin-left btn-sm" type="button" onclick="clearForm()">重置</button>
<button class="btn btn-primary pull-right btn-sm" type="button" onclick="reload()">查询</button>
</div>