2

重複の可能性:
Javascript add delete row は、行を追加する代わりにフォームを送信します

私は2つのフォームを持つページを持っています。

1 つのフォームには、クエリ文字列を連結するために使用される非表示の入力要素が 1 つあるだけです。

他のフォームには、単純なボタン要素 (入力タイプの送信ボタンではない) があり、アイデアは、他のフォームの onclick (JavaScript を使用) を送信することです。ボタンはこの形です。

現状では (テスト目的で)、現時点で行っているのは、changeSpec() という JavaScript 関数を呼び出すことだけです。コードの行は、非表示の入力要素の値を表示する警告ボックスだけです。

ボタン:

<td class="entry" colspan="3"><button onclick="changeSpec()">Change Species</button></td>

入力要素が非表示のフォーム:

<form id="specChange" action="" method="get"><input id="hiddenSpec" type="hidden" value='@oppSpec' /></form>

JavaScript 関数:

function changeSpec() 
{
    alert($("#hiddenSpec").val());
}

通常のボタン要素をクリックすると、サーバー側エラー (YSOD) が発生します...つまり、うわー、それが来るのを見ていませんでした (笑)。

私が得るエラーは、これとは関係ありません.クエリ文字列のキャストエラーであるため、まだ整理する必要があります. また、この YSOD はランタイム エラーであり、コンパイラ エラーではありません。ページが送信されたと判断されるまでページは問題なくロードされ、その後 IsPost ブランチが実行されるためです。

とにかく、どういうわけか (onclick="" を設定した場合でも)、大きなフォームにあるこのボタンが実際にフォームを送信しようとしていることがわかりますか?

以前に他のフォームで通常のボタン要素を使用したことがあるだけでなく、通常のボタンではフォームを送信できないと常に考えていました。また、(そのレベルで) 間抜けなことが何も起こっていないことを確認するために、何度かキャッシュをクリアしました。 . とにかく、通常のボタン要素を html フォームでどのように解釈できるかに関する教育が必要なようです。

助けてください、私はここで本当に途方に暮れています。これはどのように可能ですか?

ありがとう、さらにコードが必要な場合はお知らせください。

4

2 に答える 2

5

W3Cボタンのwikiページから:

欠落している値のデフォルト[for type]は、送信ボタンの状態です。

つまり、属性buttonのないtypeものは送信ボタンであり、デフォルトでフォームを送信します。コードを次のように変更します<button type="button" onclick="...">

于 2012-12-14T16:18:22.583 に答える
2

見てみましょう:http ://www.w3schools.com/tags/tag_button.asp

ヒントと注意

注:要素をHTMLフォームで使用する場合、ブラウザーによって送信される値が異なる場合があります。HTMLフォームでボタンを作成するために使用します。

フォームを送信しないボタンが必要な場合は、<input type=button />HTMLボタンを使用してフォームを送信しないでください

乾杯。

于 2012-12-14T16:17:31.873 に答える