<form name="Form" action="t" method="post" onsubmit="return check();">
如果这句没有return有什么不同?
<form name="Form" action="t" method="post" onsubmit="return check();">
如果这句没有return有什么不同?
onsubmit="return check();"
是你在点击提交时,把check()整个函数作为返回赋值给onsubmit
onsubmit="check();"
是你在点击提交时,执行check()这个函数
这两个很不一样
var onsubmit = function(){
return check();
}
onsubmit();//相当于点击
var onsubmit2 = function(){
check();
}
onsubmit2();
function check(){
console.log("i'm checked");
return "check";
}
<form onsubmit="check()"></form>
<form onsubmit="return check()"></form>
<script>
var forms = document.querySelectorAll('form');
console.log(forms[0].onsubmit)
console.log(forms[1].onsubmit)
看看输出的是什么,表单事件只有显式的return false
时才会阻止提交
onsubmit事件支持所有浏览器。
onsubmit事件支持且仅支持form标签。
按正常的理解来说,该事件是发生在submit事件触发,但是执行action之前这中间。但是它的使用上有一个小坑。
onsubmit="alert('xxx')"
onsubmit="true/false"
onsubmit="return true/false"
如果在onsubmit中只是简单的执行类似alert()函数,无返回或者返回无关紧要的情况下,这个坑无所谓。
当你执行类似登录验证,或者其他有可能因为条件不足而取消action事件的时候,第二个使用形式会在chrome和firefox中表现异常,设置的false不能正确的终止提交,就是这么个小坑。IE是正常的。这个时候换成第三种形式的就好了,这个区别问题的导致是因为ie内核不支持某些内容。
在有判断的情况下加上onsubmit="return xxx"中的return,因为它具有更广泛的适用性。
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
表单是否提交取决于onsubmit事件的返回值。
若onsubmit事件返回false,则将阻止表单的提交。
如果不返回值,则默认为true。
onsubmit="return false;"
将无论何时都阻止表单的提交onsubmit="return check();"
是否提交表单取决于check()的返回值onsubmit="check();"
check()的返回值无影响其他大多数事件也可以这样使用。
例如:
<input type="text" onkeypress="return false;" />
将使该输入框无法输入字符`<input type="button" onclick="return false;" />
将使该按钮的点击无效`