为什么在onsubmit返回undefined后提交表单?

时间:2014-03-15 02:35:30

标签: javascript html forms

我只在Chrome和Firefox中测试过。

<form method="POST" action="post.php?action=newthread&fid=170" onsubmit="return validate(this)">
    <!--some other input elements-->
    <input type="submit">
</form>

<script>
    function validate(form) {
        // do some check, if failed, returns false
        // does not have return statement, returns undefined in Chrome and Firefox
    }
</script>

如果函数validate返回undefined,则表单仍然会被提交。但如果它返回false,表单将不会被提交,这是预期的。我以为undefined会阻止表单提交。有人可以解释这种行为吗?谢谢。

1 个答案:

答案 0 :(得分:6)

在测试事件处理程序的返回值时,Javascript使用精确比较(如===而不是==)。阻止默认操作的唯一返回值是false。任何其他返回值(包括undefined)都允许执行默认操作。