网页表单form中禁止自动提交的两种方式

前言

本文是我本人在开发网页时,在表单中加入了button按钮,本来是用于jQuery点击相应事件的按钮,然后,但我点击button时,发现不是达到jQuery指定效果,原本以为class标签或者其他代码写错,找了很久,之后查找资料,知道表单form提交除了submit提交还有button也会提交,所以总结如何处理不然button 提交表单,在本文中,我们将讨论网页表单(form)中提交的两种方式。

解决方案

return false

一种是在jQuery代码最后加一句:return false,禁止表单提交;

在jQuery事件处理函数中,返回false可以阻止表单的默认提交行为。这意味着当用户点击按钮时,表单不会执行提交操作。这种方法适用于需要在点击按钮后执行其他操作(如AJAX请求)的情况。

type为button

另一种是定义button标签方式为:新增一个附件即指定type为button

在HTML中,<button>元素有两种类型:submitbutton。默认情况下,<button>元素的类型为submit,这意味着当用户点击按钮时,表单将执行提交操作。通过将<button>元素的type属性设置为button,我们可以阻止按钮的默认提交行为。这种方法适用于不需要执行表单提交,只需要执行其他操作(如JavaScript事件处理)的情况。

以下是一个表单上传文件并且可以在页面添加多个file的前台页面代码:

html 复制代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title>
</head><script type="text/javascript" src="${pageContext.request.contextPath }/script/jquery-1.7.2.js"></script><script type="text/javascript">
    $(function(){
        //全局变量
        var i=2;
        //通过表格来进行操作
            $("#addFile").click(function(){
                alert("www");
                $(this).parent().parent().before("<tr class='file'><td>File"
                        + i +":</td><td><input type='file' name='file"
                        + i +"'/></td></tr><tr class='desc'><td>Desc"
                        + i +":</td><td><input type='text' name='desc"
                        + i +"'/><button type='button' id='delete"
                        + i +"'>删除</button></td></tr>");
                i++;    

            //获取新添加的删除按钮
            $("#delete"+(i-1)).click(function(){
                //获取要删除的行即desc
                var $tr=$(this).parent().parent();
                //file行也要删除删除
                $tr.prev("tr").remove();
                $tr.remove();

                //对i重新排序
                $(".file").each(function(index){
                    var n=index+1;
                    $(this).find("td:first").text("File"+n);
                    $(this).find("td: last input").attr("name","file"+n);
                });
                $(".desc").each(function(index){
                    var n=index+1;
                    $(this).find("td:first").text("Desc"+n);
                    $(this).find("td: last input").attr("name","desc"+n);

                });
            });
            //return false,禁止提交表单
            return false;
            });
    });
</script>

<body>
    <font color="red">${msg }</font>
    <br><br>

    <form action="UploadServlet" method="post" enctype="multipart/form-data">
       <input type="hidden" id="fileNum" name="fileNum" value="1"/>

        <!-- 通过表格包装成一个整体 -->
       <table>
            <tr class="file">
                <td>File1:</td>
                <td><input type="file" name="file1"/></td>
            </tr>
            <tr class="desc">
                <td>Desc1:</td>
                <td><input type="text" name="desc1"/></td>
            </tr>
            <tr>
                <td><input type="submit" id="submit" value="提交"/></td>
                <!-- 必须指定类型是type="button"否则,点击后会提交表单 -->
                <td><button type="button"  id="addFile">新增一个附件</button></td>
            </tr>
        </table>
    </form>

</body>
</html>

总结

  • 当需要在点击按钮后执行其他操作(如AJAX请求)时,可以在jQuery事件处理函数中返回false以禁止表单提交。
  • 当不需要执行表单提交,只需要执行其他操作(如JavaScript事件处理)时,可以将<button>元素的type属性设置为button以阻止按钮的默认提交行为。
相关推荐
阿珊和她的猫21 小时前
`require` 与 `import` 的区别剖析
前端·webpack
+VX:Fegn08951 天前
计算机毕业设计|基于springboot + vue在线音乐播放系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
谎言西西里1 天前
零基础 Coze + 前端 Vue3 边玩边开发:宠物冰球运动员生成器
前端·coze
code bean1 天前
Flask图片服务在不同网络接口下的路径解析问题及解决方案
后端·python·flask
+VX:Fegn08951 天前
计算机毕业设计|基于springboot + vue律师咨询系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·课程设计
努力的小郑1 天前
2025年度总结:当我在 Cursor 里敲下 Tab 的那一刻,我知道时代变了
前端·后端·ai编程
GIS之路1 天前
GDAL 实现数据空间查询
前端
OEC小胖胖1 天前
01|从 Monorepo 到发布产物:React 仓库全景与构建链路
前端·react.js·前端框架
2501_944711431 天前
构建 React Todo 应用:组件通信与状态管理的最佳实践
前端·javascript·react.js
困惑阿三1 天前
2025 前端技术全景图:从“夯”到“拉”排行榜
前端·javascript·程序人生·react.js·vue·学习方法