onSubmit="check()"和onSubmit="return check()",为什么要加上return?。
结论:onSubmit是用来验证表单数据的合法性的,onSubmit="check()"没有用,onSubmit="return check()"有用。
我们在写form的时候,往往需要确认数据的合法性。
比如用户名称合不合法?邮箱格式正不正确?
如果不正确的话,数据就不要发送了。
所以我们就会用到form标签的onSubmit属性,通过让onSubmit="check()"来阻止不合法的数据被发送
这里的check()是一个验证数据合法性的函数,数据不合法check返回false,onSubmit就是false,不就可以了吗?
这样乍一看好像很对,实际操作却是,即使不合法,数据还是会被发送
为什么呢?
首先,查看文档就会发现,onSubmit属性就相当于form标签里的一个函数名,onSubmit的value就是onSubmit这个“函数”里的内置函数,而onSubmit这个“函数”默认返回值是true。
就像这样:
function onSubmit() { check(); return true; }
这样我们就很清晰地看到,即使check()的返回值是false,onSubmit的返回值也是true,数据还是会被提交。
所以,我们应该使用onSubmit="return check()",这样onSubmit的返回值就不会是默认的true,而是check()的返回值了。
function onSubmit() { return check(); }