5

ASP.NET Web フォームと ASP 3 (Classic ASP) で、フォームの送信ボタンに「送信」という名前を付けると「問題が発生する」という問題に遭遇しました。以下は、レンダリングされた HTML です。

<input type="submit" name="Submit" value="Submit" id="Submit" />

私が「物事を壊す」と言ったのは、なぜ、何が起こったのか正確にはわからないからです。しかし、たいていの場合、送信ボタンを押しても何も起こらない、つまり単に機能しないという症状がありました。しかし、時々それはうまくいきました。

実際、以下のコードを使用して簡単な 1 ページ テストを作成したところ、送信は正常に機能しました。

<form id="form1" runat="server">
<div>
    <asp:TextBox ID="txtTest" runat="server" />
    <asp:Button ID="Submit" runat="server" Text="Submit" />
</div>
</form>

しかし、過去にこの問題が発生し、ボタンの名前を変更すると常に症状が解消されました。

HTML/HTTP/ブラウザの専門家は、送信ボタンに id="submit" を設定すると問題が発生する理由を知っていますか?

編集

this SO コメントは、「送信」が予約済みのキーワードであることを示唆しているようです。しかし、なぜ「id」または「name」属性がこれに干渉するのでしょうか? そして、この「予約済み」キーワードは、競合を引き起こすような方法でどのように実装されるのでしょうか?

再度、感謝します

4

4 に答える 4

17

要素には、という名前のformメソッドsubmitがありますが、フォームのフォーム要素もメンバーとして持っています。

、という名前のフォームにボタンがある場合は、submitを使用してアクセスできますdocument.form1.submit。ただし、これはメソッドと同じ名前でsubmitあるため、そのメソッドにアクセスする方法はありません。この方法を使用してフォームを送信すると、それは機能しなくなります。

たとえば、Javascriptを使用してフォームを送信するボタンがある場合、それは機能しません。

<input type="button" name="submit" onclick="this.form.submit();" value="try" />

ボタンがsubmitメソッドを使用しようとすると、代わりにそれ自体への参照が取得されます(ボタンは関数ではないため、ボタンを呼び出そうとするとエラーメッセージが表示されます)。

于 2009-05-18T04:46:07.630 に答える
2

javascriptのDOMの予約語のすべてに近づかないようにお願いします。定義するすべての前に「my」を使用するか、$、または予約語と明らかに競合しない他の何かを使用します。これは、誤って過負荷になり、大混乱を引き起こす可能性があります。

于 2009-05-18T04:49:22.157 に答える
0

イベントをオブジェクトにバインドできるようにするために生成されるコードビハインドは、指定した値に基づいて名前が付けられます。

于 2009-05-18T04:45:05.243 に答える