GET

2011-07-04 8 views
0

Iに基づいてアイテムを事前に選択します。$_GETの値に基づいてリストボックス内のアイテムを事前に選択します。GET

例:オプション1,2,3の選択ボックス。 URLから値2が得られます。この値を事前に選択するにはどうすればよいですか? <option ...selected>...</>のやり方はあまりにも複雑です。 <select selected="2">のように、どのオプションがあらかじめ選択されているかを宣言したいだけです。

+0

はあなたが私たちを示すことができるように別の非もし非jsのバージョンは、おそらく何かかもしれませんリストボックスが出力されていますか?それはPHPによって出力されますか? – EdoDodo

答えて

3

私の答えにはifの数が少ない解決策が最後のものです。

残念ながら、そうではありません<select selected="2">。あなたがmutliplesを許可した場合、私はin_arrayを使用してselect要素の名前が、それは(角括弧を使用して)、配列のように指定していることを確認します

<select name="select"> 
    <option value="1"<?php if ($_GET['select'] == '1'): ?> selected="selected"<?php endif; ?>>Option 1</option> 
    <option value="2"<?php if ($_GET['select'] == '2'): ?> selected="selected"<?php endif; ?>>Option 2</option> 
    <option value="3"<?php if ($_GET['select'] == '3'): ?> selected="selected"<?php endif; ?>>Option 3</option> 
</select> 

を:あなたはこのような何かをする必要があります。代替案として

<select multiple="multiple" name="multi_select[]"> 
    <option value="1"<?php if (in_array('1', $_GET['multi_select'])): ?> selected="selected"<?php endif; ?>>Option 1</option> 
    <option value="2"<?php if (in_array('2', $_GET['multi_select'])): ?> selected="selected"<?php endif; ?>>Option 2</option> 
    <option value="3"<?php if (in_array('3', $_GET['multi_select'])): ?> selected="selected"<?php endif; ?>>Option 3</option> 
</select> 

、あなたはoptionを作成するためのオプションとforeachループを作成するためにPHP arrayを使用することができます。

<select name="select"> 
<?php 

$options = array(
    1 => 'Option 1', 
    2 => 'Option 2', 
    3 => 'Option 3' 
); 

foreach ($options as $value => $name) 
{ 
    echo '<option value="' . $value . '"' . ($_GET['select'] == $value ? ' selected="selected"' : '') . '>' . $name . '</option>'; 
} 

?> 
</select> 
+1

多くの 'if'sがあります! –

+0

@Michael Mior - 私の最後の選択肢には、多くの 'if'文がありません。しかし、それは計画が通常のHTMLを使用する場合は、JavaScriptを無効にしているクライアントで動作するように他にどのようにすることをお勧めしますか?私はすべてjQuery用ですが、JavaScriptを無効にしている人もいます。すべてのHTMLオプションは、これほど単純なものにはるかに適していると思います。 –

+0

私はJavascriptが良いアイデアだとは思わなかった。私はそうは思わない。私も何とか答えの最後のオプションを逃した。はるかにきれいに見えます:) –

2

選択されたタグにどのタグが選択されているかを示す方法はありません。これはoptionタグを通して行わなければなりません。

オプションをループしたことはありますか?

$desiredSelect = $_GET['desired']; 

foreach(array('option-value' => 'option-text', 
       'option-value2' =>'option-text2') as $val => $test) 
{ 
    echo "<option value=\"$val\" "; 
    if($val == $desiredSelect) echo "selected = \"selected\""; 
    echo ">$text</option>"; 
} 
+0

+!各オプションにifステートメントがないためです。 –

1

アン・オプションは、要求がGETした場合は、DOM準備に発射されるように、簡単なJavaScriptを/ jQueryのスクリプトを挿入することができます

要求が取得される場合には、応答HTMLにこのコードを挿入します:

$(function(){ 
    $('#selectBox').val(selectedItemValue); 
}); 

これは簡単です。 :)

+0

Javascriptを使用していない人や、jQueryを使用している人は気にしません。 'selectedItemValue'が魔法のように設定されているとします。 –

+0

selectedItemValueはサーバー(インラインPHP)で作成することができます。サーバーで選択ボックスの選択値を設定する場合は、クライアントによって事前に設定されているので、それを知っています。しかし、あなたは正しい。少しのJavaScript/jQueryの知識が必要です:) –

+0

私の主張は、これが動作するために必要なコードを除外し、Javascriptに慣れていない人にとっては明らかではないかもしれないので、それほど単純ではありませんでした。解決策は間違いなく働くだろう:) –

0

実際には、2つの方法があります。最初は、各要素を選択したものと比較することです(@ Francois Deschenesと@cwallenpooleのように)。 2つ目は回避策であり、それほど良くないが実装が容易なためです。リストが形成された後は、必要に選択した項目を設定するためにJavaScriptを使用することができます。

<script type="text/javascript"> 
$(function() { 
    $('select[selected]').val(function() { 
     return $(this).attr('selected') 
    }) 
}); 
</script> 
<select selected="7"> 
    <option value="1">1</option> 
    <!-- ... --> 
    <option value="10">10</option> 
</select> 
+0

@Saeed Neamatiは私が書いている間に同じように投稿しました:) – RReverser

0

をどのようにこの

<? 
$res = array($_GET["selected"] => " selected='selected'");  
?> 


<select name="select"> 
    <option value="1"<? echo $res['1']; ?>>Option 1</option> 
    <option value="2"<? echo $res['2']; ?>>Option 2</option> 
    <option value="3"<? echo $res['3']; ?>>Option 3</option> 
</select>