0

これを正しく説明できることを願っています...

次の Web ページには、onSubmit ハンドラーを含むフォームが含まれています。onSubmit ハンドラは、常に返す関数です。falseつまり、フォームは送信されません。ただし、これは IE8 (およびおそらく他のバージョンの IE) でのみ機能します。

これを Firefox と Chrome で動作させるには、アラートを次のように変更する必要があります。

alert(foo["firstName"].value);

フォームは連想配列であるため、角括弧を使用することが正しいフォームである理由を理解しています。

  • しかし、フォームが FF と Chrome で送信されるのはなぜform("firstName")ですか (明らかに間違っています)。
  • 私がキャッチできるエラーはありますか?(Firebug では明らかなことは何もわかりませんでした。)
  • trueが返されたときにのみフォームが送信されるようにする方法はありますか?

ありがとう

<html>
<head>
<script>
function alwaysReturnFalse() {
    alert(foo("firstName").value);
    return false;
}
</script>
</head>
<body>
<form name="foo" onSubmit="return alwaysReturnFalse();">
    First name: <input name="firstName" type="text" value="Bob"/><br/>
    Last name: <input name="lastName" type="text"/><br/>
    <input type="submit" value="Submit"/>
</form>
This form has an onSubmit handler that always returns false - meaning the form should never submit.<br/>
It works in IE8 - e.g. the onSubmit handler executes an alert() and then returns false.<br/>
It fails in Firefox and Chrome - e.g. the form is submitted.
</body>
</html>
4

1 に答える 1

2

他のブラウザがエラーをスローするため、フォームが送信されます。このエラーにより、関数は早期に終了します。その結果、コードはfalseを返すことに到達しないため、フォームが送信されます。

于 2013-03-12T17:58:19.700 に答える