3

我不太明白它是如何onsubmit="return validate()"工作的。为什么我必须使用return该功能?仅当它return false从语句中检测到 a 时才有效?

<script type="text/javascript">
    function validate() {
        if ((document.example2.naming.value == "") || (document.example2.feed.value == "")) {
            alert("You must fill in all of the required .fields!");
            return false;
        }
        else {
            return true;
        }
</script>

<form name="example2" onsubmit="return validate()">
<input type="submit" name="B1" value="Submit">​​​​​​​
4

2 回答 2

13

使用returnforonsubmit确定表单是否实际提交(truefalse,分别)。当您想要在允许表单提交或不提交之前做一些特定的事情时,这对于 Javascript 很有用。例如,就像您提供的代码一样,关键是如果表单无效 - 如果某个字段为空白,则停止提交表单。重要的部分是您需要包含return在 onsubmit 部分中,以及实际返回truefalse在您调用的函数中。这是因为onsubmit除非您返回,否则 for 的行为将始终完成false。因此,当您执行以下操作时:

onsubmit="validate();"

什么都没有返回(因为缺少return) - 所以函数运行但就是这样,所以表单被提交。当您添加return时,提交取决于返回值 - 从函数返回的内容。如果不使用return,则函数返回什么都没有关系validate,因为 的结果validate实际上并没有返回到onsubmit.

于 2012-09-16T17:34:19.983 回答
1

returning时false,您会阻止提交form。否则,将提交表单,即使它可能有验证错误,例如,feed值为空。

另一方面,如果你return true,表单数据将被提交到action属性定义的 URL。

于 2012-09-16T17:29:41.820 回答