• form onSubmit返回false不起作用


    前言

    Form onSubmit 有的时候使用 onSubmit 会出现没触发、或者触发了返回不起作用的情况。

    onSubmit 没触发解决方案

    οnsubmit="vaild()"
    
    • 1

    大部分情况都是少了 return ,正例

    οnsubmit="return vaild()"
    
    • 1

    注意: 返回 flase 指不提交,true 提交

    案例:

    html

    <form id="listForm" action="feno_report.jhtml" method="get" onsubmit="return vaild()">
    
    • 1

    script

    <script>
      function vaild() {
    		    var time = document.getElementById("filter_startTime").value;
    		    startTime = new Date(time.replace(/-/g, '/'))
    		    // 当前时间
                var currentTime = new Date();
                if (startTime.getTime() >= currentTime.getTime()) {
                    return false;
                };
                var t1 = currentTime.getTime();
                var t2 = startTime.getTime();
                var dateTime = 1000 * 60 * 60 * 24;
                var minusDays = Math.floor((t1 - t2) / dateTime);
                if ( (${setFindLimitTime} * 30) <  minusDays ) {
                    layer.msg('已超过账号时间限制'+${setFindLimitTime}+'个月');
                    return false;
                } else {
                    return true;
                }
                return false;
    		}
    </script>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    onSubmit 触发了,返回失效

    问题

    jquery validateonsubmit 两种校验冲突了,会导致 onsubmit 会失效。

    测试

    jquery validate 也是在 submit 的时候开始判断的,并且在 onsubmit 事件之后,所以 onsubmit 返回false,只要满足 validate 的条件仍然会返回true,表单仍被提交。

    方案

    jquery validatesubmit 只能留一个,我选了 jquery validate ,使用 validate 自定义校验。

    jquery validate自定义校验

    jq

    
    <script src="./jquery-1.11.1.js" type="text/javascript" charset="utf-8">script>
    
    <script src="./jquery.validate.js" type="text/javascript" charset="utf-8">script>
    
    <script src="./messages_zh.js" type="text/javascript" charset="utf-8">script>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    html

    <form id="inputForm"  action="update.jhtml" method="post">
        <input type="text" name="username" class="form-control" maxlength="200" />
        <button class="btn btn-success" type="submit">保存内容button>
    form>
    
    • 1
    • 2
    • 3
    • 4
    <script>
         // 自定义校验 true 提交,false 返回1+1不等于2
         jQuery.validator.addMethod("user",function(value, element){
            var results = false;
            return results;
         },"1+1不等于2");
         $(document).ready(function () {
             $("#inputForm").validate({
                    rules: {
    					username:{
    					   // 必填
    				       required : true,
    				       // 绑定自定义校验
    				       user: true
    				    }
                    }
                });
            });
         })
    </script>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
  • 相关阅读:
    【小白专属02】SpringBoot集成MybatisPlus
    生成“我的精彩回答”页面源码(Python)
    刷题-买卖股票的最佳时机-C++/java(暴力法,动态规划,单调栈等)
    Android App内存泄漏原理、检测及修改方案
    黑马旅游网-配置项目(一)
    【Day14】类和对象
    【Java】Jxls--轻松生成 Excel
    Ant vue中表单验证(动态校验、部分校验)
    iOS 17.2更新:15Pro支持拍摄空间视频!
    Termius 8.4.0(多协议远程管理软件)
  • 原文地址:https://blog.csdn.net/qq_44697754/article/details/126748892