【问题标题】:html select option SELECTEDhtml 选择选项 SELECTED
【发布时间】:2012-09-28 17:48:30
【问题描述】:

我的 php 中有

$sel = "
    <option> one </option>
    <option> two </option>
    <option> thre </option>
    <option> four </option>
";

假设我有一个内联 URL = site.php?sel=one

如果我没有将这些选项保存在变量中,我可以这样做以使其中一个选项成为 SELECTED 值等于$_GET[sel]

<option <?php if($_GET[sel] == 'one') echo"selected"; ?> > one </option>
<option <?php if($_GET[sel] == 'two') echo"selected"; ?> > two </option>
<option <?php if($_GET[sel] == 'three') echo"selected"; ?> > three </option>
<option <?php if($_GET[sel] == 'four') echo"selected"; ?> > four </option>

但问题是,我需要将这些选项保存在一个变量中,因为我有很多选项,而且我需要多次调用该变量。

有没有办法在value = $_GET[sel] 处选择该选项?

【问题讨论】:

  • 该选择是如何生成的?是硬编码的吗?
  • 当你说你将它们存储在一个变量中时,我假设你的意思是一个数组,对吧?
  • 无论是 Ben 所说的,还是我假设如果您通过一个变量拍摄,您使用的是分配给选项的值而不是名称。我会为它编写一个简单的函数,每次都调用它,让它通过 if else 语句运行。为您节省大量编码或复制粘贴。

标签: php html option selected


【解决方案1】:

只需使用选项数组,即可查看当前选择了哪个选项。

$options = array( 'one', 'two', 'three' );

$output = '';
for( $i=0; $i<count($options); $i++ ) {
  $output .= '<option ' 
             . ( $_GET['sel'] == $options[$i] ? 'selected="selected"' : '' ) . '>' 
             . $options[$i] 
             . '</option>';
}

旁注:我会为每个元素定义一个值作为某种 id,否则当两个选项具有相同的字符串表示时,您可能会遇到问题。

【讨论】:

  • 感谢@sirko,但发现一些错误没有'var',它必须是$i
  • 更正了。过去几周 JavaScript 编码过多。
【解决方案2】:
foreach($array as $value=>$name)
{
    if($value == $_GET['sel'])
    {
         echo "<option selected='selected' value='".$value."'>".$name."</option>";
    }
    else
    {
         echo "<option value='".$value."'>".$name."</option>";
    }
}

【讨论】:

  • 这将为所选值输出 两个 值。您的意思是要将第二个回声包装在 else 中吗?
  • 是的,这是我的错误......它应该在其他部分。
【解决方案3】:

这是一个简单的例子,使用三元运算符设置 selected=selected

<?php $plan = array('1' => 'Green','2'=>'Red' ); ?>
<select class="form-control" title="Choose Plan">
<?php foreach ($plan as $key => $value) { ?>
  <option value="<?php echo $key;?>" <?php echo ($key ==  '2') ? ' selected="selected"' : '';?>><?php echo $value;?></option>
<?php } ?>
</select>

【讨论】:

    【解决方案4】:

    您缺少 $_GET['sel'] 的引号 - 修复此问题可能有助于更快地解决您的问题 :)

    【讨论】:

      【解决方案5】:
      foreach ($array as $value => $name) {
           echo '<option value="' . htmlentities($value) . '"' . (($_GET['sel'] === $value) ? ' selected="selected"') . '>' . htmlentities($name) . '</option>';
      }
      

      这相当简洁,而且,我认为,不言自明。

      【讨论】:

        【解决方案6】:

        您可以创建一个函数,然后将其添加到每个选项字段以打印 selected="selected"。

        例子

        <option value="PHP" ' . tsw_selected('PHP', $row['anchor']) . '>PHP/PDO/SQL[+]</option>
        <option value="HTML" ' . tsw_selected('HTML', $row['anchor']) . '>HTML/CSS</option>
        

        那么你的乐趣:

        function tsw_selected( $opt, $val )
        {
        $sel = '';
        $opt = ('' != $opt ) ? $opt : 'OTHER';
        if( $opt == $val ) $sel = true;
        if ( $sel ) {
            return 'selected="selected"'; } else { return ''; }
        }
        

        这将回显 select="selected" 每个 true 和 echo '' (nothing) for false。 您可以设置 $sel = false,但这并不重要。布尔检查空是否为假。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-27
          • 2015-05-10
          • 1970-01-01
          • 1970-01-01
          • 2018-03-05
          • 1970-01-01
          • 2015-06-08
          相关资源
          最近更新 更多