2011-08-23 5 views
7

ページのレンダリング時には、複数選択のval()が1つの値で設定されます。たとえば、$("#my_select_box").val(1); ユーザーは、複数の選択ボックスで追加の値を選択します。Html:複数選択の場合、1つの値のみが送信されますが、.val()は2つの値の配列を返します

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

答えて

2

コードなしではわかりません。しかし、複数のパラメータを渡す場合は、その入力の名前値に[]を付ける必要があります。 Ex。実際には2つの値があることをサーバーが知るためには、 "name []"

0

コードなしで何をするか指示するのは難しいです。あなたはselectedと選択されたことを別のマークoptionの両方が必要な場合は、次のように

しかし、あなたはそれらにアクセスすることができます:あなたがのために

option:selectedを設定するいずれかの

option[selected="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); 
}); 

例:あなたはPHPでプログラミングしている場合はhttp://jsfiddle.net/jasongennaro/pZesG/1/

18

、問題があります。複数選択入力を使用する場合、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); 

そして、 10

関連する問題