我根据$_GET
的值预先选择列表框中的项目。
Ex:选择框1,2,3。从网址我得到的值2.我如何预选这个值?使用<option ...selected>...</>
的方式太复杂了。我只想声明预先选择了哪个选项,例如<select selected="2">
。
答案 0 :(得分:3)
我的答案中if
语句数量较少的解决方案是最后一个。
不幸的是,没有办法<select selected="2">
。你必须做这样的事情:
<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>
如果允许多个,我会使用in_array
并确保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>
作为替代方案,您可以使用PHP array
创建选项,并使用foreach
循环创建option
。
<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 :(得分:2)
没有办法让选定的标签指示选择了哪一个。必须通过选项标签完成。
您是否考虑过循环选项?
$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>";
}
答案 2 :(得分:1)
一个选项可能是注入一个简单的JavaScript / jQuery脚本,如果请求是get,则可以在DOM上触发:
如果请求获取,则将此代码注入响应HTML:
$(function(){
$('#selectBox').val(selectedItemValue);
});
就这么简单。 :)
答案 3 :(得分:0)
实际上,你有两种方法:第一种方法是将每个元素与选中的元素进行比较(如@Francois Deschenes和@cwallenpoole);第二个是解决方法,因为它不是很好,但更容易实现。在列表成立后,您可以使用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>
答案 4 :(得分:0)
另一个非if非js版本可能是这样的
<?
$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>