1

以下にこのコードがあります。選択後はすべて無効になります。

<select id="dropdown" name="dropdown" onchange="javascript:this.disabled = 'disabled';">
<option value="dropdown">Pls select one
<option value="apple">Apple
<option value="oragne">Orange
<option value="grapes">Grapes
</select>

しかし、送信を押すと、「ドロップダウン」の値が渡されません。ここで何か不足していますか?

4

4 に答える 4

1

無効化されたフォーム コントロールは送信されません。これは正常な動作です。

回避策の 1 つは、選択した値を、送信される非表示の入力にコピーすることです

(ただし、変更時に選択を無効にすることはお勧めしません。ユーザーが誤って間違ったものをクリックした場合はどうなりますか?キーボードで選択しようとしていた場合はどうなりますか?)

(別の話としてjavascript:、インライン イベント属性は必要ありません。)

編集:隠し入力を実装する方法は? 隠し入力に、サーバー側のコードが期待する名前を付けます (そしてname、select 要素から属性を削除します)。

<input type="hidden" name="dropdown" id="dropdown">

そして、onchange属性は次のようになります。

<select onchange="document.getElementById('dropdown').value=this.value; this.disabled=true;">
于 2013-04-26T00:26:24.927 に答える
0

ドロップダウンを無効にしたため、ドロップダウンから選択したオプションの値は渡されません。たぶんそれが理由です。無効にしないでください。

于 2013-04-26T00:25:00.393 に答える
0

無効な選択はデフォルトでは送信されないようです。

別の非表示の選択要素を追加できます。そして、スクリプトを使用して送信する選択を行います。

于 2013-04-26T00:31:31.133 に答える
0

コントロールを無効にしてからその値を送信することは、実際には意味がありません。値を送信したい場合は、無効にしないでください。

とにかく、1 つのオプションは、送信する前にコントロールを有効にすることです。

<form ... onsubmit="this.dropdown.disabled = false;">

これで、値をどこにもコピーする必要がなくなり、コントロールが無効になっているかどうかにかかわらず、値が送信されます。

于 2013-04-26T01:39:06.083 に答える