3

私は想定されているボタンタグと入力タグを持っています.

<button value="<%=RS("field1")%>" name="change" id="change">Change</button>

これは Firefox では問題なく動作しますが、IE では.. dun,dun,dunnnn... ボタンの値は、ボタンが表示するテキストである「変更」という単語として返されます。

通常はタグを使用して入力するだけですが、ボタンタグしか使用できないと思います

とにかくこれを回避する方法はありますか?

4

6 に答える 6

6

w3schools.comから:

重要: HTML フォームでボタン要素を使用する場合、異なるブラウザーは異なる値を送信します。Internet Explorer は<button></button> タグの間のテキストを送信しますが、他のブラウザーは value 属性のコンテンツを送信します。input 要素を使用して、HTML フォームでボタンを作成します。

したがって、あなたがすべきことは<input type="button" />

于 2010-12-15T13:41:13.020 に答える
3

このような状況で私が一般的に行ったことは、name属性に情報を埋め込んで、次のようにすることです。

<button name="change:<%=RS("field1")%>" id="change:<%=RS("field1")%>">Change</button>

次に、サーバー側のコードを使用して戻り値を破棄し、名前を{name、value)のペアに分解します。

(とにかく、「ID」は一意である必要があることに注意してください。)

于 2010-12-15T14:30:52.457 に答える
2

私の知る限り、それを回避する方法はありません。これは、IEがボタンタグを処理する方法であり、開始タグと終了タグの間にテキストを送信します。

ボタンに通常の入力タグを使用できないことを考えると、使用したいメソッドを伝えるために非表示フィールドを使用するのはどうですか?

<form action="somepage" method="POST">
    <!-- some fields here -->
    <input type="hidden" name="action" value="<%=RS("field1")%>" />
    <button name="change" id="change">Change</button>
</form>
于 2010-12-15T13:44:37.437 に答える
1

必要な値は常にボタンの「値」属性にあるように思えます(これは他のブラウザーが送信する値であるため)。

<button ... onclick="this.innerHTML=this.value;" ... >
于 2013-03-25T17:05:53.060 に答える
0

IE8 は値を送信するため、IE7 のみ (おそらく 6 でも問題ありません) の問題です。

いずれにせよ、考えられるトリックの 1 つは、値をテキストの一部として非表示にしてから、ボタン クリック イベント (JavaScript を使用) でボタン テキストをその値に変更することです。

最終結果は次のようになります。

<button value="<%=RS("field1")%>" name="change" onclick="this.innerHTML = this.childNodes[1].innerHTML;"><span>Change</span><span style="display: none;"><%=RS("field1")%></span></button>

また、ループ内にこれがあるため、複数の要素が同じ ID を共有することを避けるために ID を設定しないでください。これは無効であり、何らかの理由で ID が必要な場合は、反復ごとに固有のものを追加してください。

于 2010-12-15T14:47:52.703 に答える
0

上で説明したように、ペア {button_name,button_value} の値をチェックしないでください。代わりに、値をチェックせずに入力セットに存在するボタン名だけをチェックしてください。

于 2014-09-03T10:57:52.450 に答える