ページをレンダリングするときval()、複数選択の は単一の値で設定されます。たとえば、$("#my_select_box").val(1);
次に、ユーザーが複数選択ボックスで追加の値を選択します。
フォームが送信されると、新しく選択された値のみが送信され、以前に設定された値は送信されません。一方、Firefox でのデバッグ中は、.val()関数は 2 つの値 (前の値と新しく選択された値の両方) の配列を返します。なぜこれが起こるのですか?
ページをレンダリングするときval()、複数選択の は単一の値で設定されます。たとえば、$("#my_select_box").val(1);
次に、ユーザーが複数選択ボックスで追加の値を選択します。
フォームが送信されると、新しく選択された値のみが送信され、以前に設定された値は送信されません。一方、Firefox でのデバッグ中は、.val()関数は 2 つの値 (前の値と新しく選択された値の両方) の配列を返します。なぜこれが起こるのですか?
PHPでプログラミングしている場合、問題はそこにあります。複数選択入力を使用する場合、PHPでは入力名の後に空の角かっこを使用する必要があります。例えば:
<select name="select[]" multiple="multiple">
ただではなく
<select name="select" multiple="multiple">
これができない、またはできない場合(おそらく、基になるHTMLにアクセスできない場合)、代わりに次のようにPOSTデータをキャプチャできます。
$data_from_post = file_get_contents("php://input");
var_dump($data_from_post);
そして、あなたはあなたが使うことができるこのような文字列を見るでしょう:
select=one&select=two&select=three&button=submit
まあ、コードなしでは確信が持てません。ただし、複数のパラメーターを渡す場合は、その入力の名前の値に [ ] ブラケットを指定する必要があります。元。実際には 2 つの値があることをサーバーが認識できるようにするためです。
コードなしで何をすべきかを言うのは難しい。
ただし、optionマークselectedしたものと選択したものの両方が必要な場合は、次のようにアクセスできます。
option[selected="selected"]あなたが設定したもののために
と
option:selectedユーザーが選択したものの場合
だからこのようなもの...
$('#submit').click(function(){
var s = $('#my_select_box option[selected="selected"]').val();
var t = $('#my_select_box option:selected').val();
alert("Set: " + s + ", Chosen: " + t);
});
例: http: //jsfiddle.net/jasongennaro/pZesG/1/