form表单的submit和onsubmit的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了form表单的submit和onsubmit的区别相关的知识,希望对你有一定的参考价值。

javascript中的submit与onsubmit事件:

submit与onsubmit
发生顺序:onsubmit -> submit
1.阻止表单提单:
<script>
function submitFun()

//逻辑判断
return true; //允许表单提交
//逻辑判断
return false;//不允许表单提交

</script>
<form onsubmit=” reture submitFun();”> //注意此处不能写成 onsubmit=”submitFun();” 否则将表单总是提交的
</form>
2.onsubmit()与submit() :
<script>
function fun()

alert("form_submit");

</script>

<form onsubmit="fun()">
<input type="submit" id="aaa" value="submit"> <!--能弹出form_submit-->
<input type="button" id="bbb" value="onclick_submit" onclick="document.forms[0].submit()">
<!--
表单会提交,但是不会执行fun() 原因是 onsubmit事件不能通过此种方式触发(在IE环境)
直接用脚本documetn.formName.submit()提交表单是不会触发表单的onsubmit()事件的
-->
<input type="button" id="bb1" value="onclick_onsubmit" onclick="document.forms[0].onsubmit()">

<!--会触发fun()函数-->
</form>
参考技术A submit和onsubmit在表单中经常用上

由表单中onsubmit="return false;"想到的
众所周知,在表单中加上onsubmit="return false;"可以阻止表单提交。 下面是简单的一小段代码: 代码

大家判断像上面的写法,点击submit按钮该表单是否提交?
若答案为是,就不用往下看了。
若答案为否,错了。实际情况是表单正常提交,若想它不提交,应该将 代码
改为 代码

为何?
原来onsubmit属性就像是这个html对象的一个方法名,其值(一字符串)就是其方法体,默认返回true;
和Java一样,在该方法体中你可以写任意多个语句,包括内置函数和自定义函数,如 代码
onsubmit="
alert('haha'); // 内置函数
submitTest(); // 自定义函数
alert(this.tagName); // 用到了this关键词
......(任意多条语句)
return false; "
就相当于 代码
Form.prototype.onsubmit = function()
alert('haha'); // 内置函数
submitTest(); // 自定义函数
alert(this.tagName); // 用到了this关键词
......(任意多条语句)
return false; ;
这样的话你就覆写了(override)其默认方法(默认返回true)
大家注意到方法体中可以用this这个关键词,这里即代表了的对象实例。
经过这样的分析后,以上情况就不难理解了: 代码
这样写,override方法的效果为: 代码

Javascript中的form


form对象是表单的DOM对象

方法:submit()提交表单,但是不会触发onsubmit事件。

在点击submit后form的onsubmit事件被触发,在onsubmit中可以进行数据校验,如果数据有问题,返回false即可取消提交。


示例代码:提交按钮的click和表单的submit方法比较

<!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>Javascript测试</title>
    <script type="text/javascript">
        onload=function(){
            document.getElementById(‘fm‘).onsubmit = function(){
                //验证数据文本框中的值是否为空
                if(document.getElementById(‘txt‘).value.length==0)
                {
                    return false;
                }
            };

            document.getElementById(‘dv‘).onclick=function(){
                //这个是调用按钮的点击事件,会执行表单的onsubmit事件,推荐使用这个
                //document.getElementById(‘btnSearch‘).click();
                //调用表单form的提交方法,不会执行表单的onsubmit事件
                document.getElementById(‘fm‘).submit();
            };
        };
    </script>
</head>
<body>
    <form id="fm" action="http://www.baidu.com/" method="get">
        <input type="text" id="txt"/>
        <input type="submit" id="btnSearch" value="搜索一下"/>
    </form>
    <div id="dv" style="width:300px;height:180px;border:solid 1px red;"></div>
</body>
</html>

效果图

技术分享







以上是关于form表单的submit和onsubmit的区别的主要内容,如果未能解决你的问题,请参考以下文章

Javascript中的form

JavaScript基础 submit按钮配合form的onsubmit实现表单的提交与验证

Angular 2 将表单分配给变量不起作用#f="form" (submit)="onSubmit(f.value)"

Form表单的action和onSubmit示例介绍

表单提交:button input submit 的区别

form.submit 方法 并不会触发 form.onsubmit 事件