9

ページをレンダリングするときval()、複数選択の は単一の値で設定されます。たとえば、$("#my_select_box").val(1); 次に、ユーザーが複数選択ボックスで追加の値を選択します。

フォームが送信されると、新しく選択された値のみが送信され、以前に設定された値は送信されません。一方、Firefox でのデバッグ中は、.val()関数は 2 つの値 (前の値と新しく選択された値の両方) の配列を返します。なぜこれが起こるのですか?

4

3 に答える 3

32

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
于 2013-01-21T01:47:50.840 に答える
3

まあ、コードなしでは確信が持てません。ただし、複数のパラメーターを渡す場合は、その入力の名前の値に [ ] ブラケットを指定する必要があります。元。実際には 2 つの値があることをサーバーが認識できるようにするためです。

于 2011-08-23T00:56:38.823 に答える
0

コードなしで何をすべきかを言うのは難しい。

ただし、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/

于 2011-08-23T01:23:16.413 に答える