天天看点

JS中onsubmit禁止提交表单的三种方式

JS中onsubmit禁止提交表单的三种方式

前面我在博客中写过onblur实现失焦调用函数的三种方式, onsubmit也几乎一模一样, 不过昨天我在写一个表单提交页面,判断某些必填项未填写则禁止提交, 我们知道onsubmit是否提交取决于它的值,true则提交,false则禁止提交; 当在调用判断函数时返回值为false却也提交了…于是我查了资料,并把JS触发事件研究了一下,总结如下:

第一种方式

匿名函数直接调用

<!DOCTYPE html>
<html >
<head>
    <meta charset="UTF-8">
    <title>Title</title>

</head>
<body>
<form action="https://www.baidu.com" id="issubmit">
    <input type="text" name="user">
    <input type="submit" value="提交">

</form>
<script>
    document.getElementById("issubmit").onsubmit=function(ev) {//匿名函数直接调用
        return false;
    }


</script>


</body>
</html>

           

实际上, 有名函数也可以直接调用,如:

<!DOCTYPE html>
<html >
<head>
    <meta charset="UTF-8">
    <title>Title</title>

</head>
<body>
<form action="https://www.baidu.com" id="issubmit">
    <input type="text" name="user">
    <input type="submit" value="提交">

</form>
<script>
    document.getElementById("issubmit").onsubmit=function fun(ev) {//有名函数也可以被直接调用, 另外几个JS触发事件也或许适用
        return false;
    }


</script>


</body>
</html>

           
第二种方式

先声明函数,再调用函数

<!DOCTYPE html>
<html >
<head>
    <meta charset="UTF-8">
    <title>Title</title>

</head>
<body>
<form action="https://www.baidu.com" id="issubmit">
    <input type="text" name="user">
    <input type="submit" value="提交">

</form>
<script>
    document.getElementById("issubmit").onsubmit=fun;//调用函数
    
        function fun(ev) {//声明函数
        return false;
    }


</script>


</body>
</html>

           

先声明函数,再调用函数实现没问题,可是如果匿名函数返回用一个变量接收,看起来这个变量像一个对象(Js中很多对象不要new就可以使用), 其实它就只是一个变量,比如这样写就不行:

<!DOCTYPE html>
<html >
<head>
    <meta charset="UTF-8">
    <title>Title</title>

</head>
<body>
<form action="https://www.baidu.com" id="issubmit">
    <input type="text" name="user">
    <input type="submit" value="提交">

</form>
<script>
    document.getElementById("issubmit").onsubmit=fun;//调用,可是这是变量,而不是对象
        var fun=function(ev) {//赋值给变量
        return false;
    }


</script>


</body>
</html>

           
第三种方式
<!DOCTYPE html>
<html >
<head>
    <meta charset="UTF-8">
    <title>Title</title>

</head>
<body>
<form action="https://www.baidu.com" id="issubmit" onsubmit="return fun()">//调用方法前面一定要加 return
    <input type="text" name="user">
    <input type="submit" value="提交">

</form>
<script>

        function fun(ev) {
        return false;
    }


</script>


</body>
</html>

           

这种方式在标签上调用函数, 因为onsubmit要接收一个Boolean值, 在onblur那篇博客我讲过, js中’=’ 相当于java中的’.’ 调用的意思, 因此只写’='onsubmit无法获取Boolean值, 也许你会问为什么第一二种不用return, 那是因为第一二种onsubmit是直接在JS代码块内调用,而第三种是在标签内调用,第三种onsubmit相当于标签的一个属性, 反正我是强行解释…