3

私はどのようにonsubmit="return validate()"機能するのかよくわかりません。なぜ私はreturnその機能をしなければならないのですか?return falseこれは、ステートメントからを検出した場合にのみ機能しますか?

<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

returnforを使用するとonsubmit、フォームが実際に送信されるかどうかが決まります (それぞれtrueまたはfalse)。これは、フォームの送信を許可するかどうかを許可する前に特定のことをしたい場合に、Javascript で役立ちます。たとえば、提供したコードのように、フォームが有効でない場合、つまり特定のフィールドが空白の場合、フォームの送信を停止することがポイントです。return重要な部分は、onsubmit 部分に含める必要があることと、実際に返すtruefalse、呼び出す関数に含める必要があることです。これは、 の動作は、onsubmit返さない限り常に完了するためですfalse。したがって、次のようなことをすると:

onsubmit="validate();"

何も返されません ( がないためreturn) - 関数は実行されますが、それだけなので、フォームが送信されます。を追加するreturnと、送信は戻り値 (関数から返されるもの) に依存します。を使用しない場合、 の結果は実際には に返されないため、関数がreturn何を返すかは問題ではありません。validatevalidateonsubmit

于 2012-09-16T17:34:19.983 に答える
1

returningfalseを実行すると、が送信されなくなります。そうしないと、値が空だっformたなどの検証エラーが発生している場合でも、フォームが送信されます。feed

一方、 の場合return true、属性で定義された URL にフォーム データが送信されactionます。

于 2012-09-16T17:29:41.820 に答える