如何让表单元素“记住”选择?

Posted

技术标签:

【中文标题】如何让表单元素“记住”选择?【英文标题】:How to make form elements "remember" selection? 【发布时间】:2011-04-26 08:33:52 【问题描述】:

我现在正在使用 php 构建一个“更改分类”页面。

我使用 mysql 作为数据库。

目前我使用PHP来获取所有关于分类的mysql信息,然后我输出如下:

  $table.="
   <select name='year' id='year'>
     <option id='2000' value='2000'>2000</option>
     <option id='2001' value='2001'>2001</option>
     <option id='2002' value='2002'>2002</option>
   </select>";

   echo $table;

我有一个图片上传工具,将页面提交给自己,同时上传图片,并显示在页面底部。问题是,无论何时完成,用户都必须重新填写所有信息,因为它们被“遗忘”了。

我知道 input type="text",您可以在其中简单地执行以下操作:

   <input type="text" name="text" value="<?php echo $_POST['text'];?>">

但是选择呢?收音机?等等?

我应该在这里做什么?

谢谢

【问题讨论】:

【参考方案1】:

您可以将selected 属性设置为"selected" 以使其成为默认/当前选择:

<option id="2000" value="2000" selected="selected">2000</option>

php 示例:

$options = array( '2000' => '2000', '2001' => '2001', '2002' => '2002' );
$selected = '2001';
$select = '<select name="year" id="year">';

foreach ( $options as $key => $value )

    $select .= '  <option value="' . $key . ( $key == $selected ? '" selected="selected">' : '">' ) . $value . '</option>';


$select .= '</select>';

【讨论】:

我的脚本如何知道要设置为选中的值?这就是问题... 更新了我的答案以包含一些 php 代码。这也动态构造了选择选项。 别忘了回显$select【参考方案2】:
<option 
  id='2000'
  value='2000'
  <?php if(isset($year) && $year === '2000') echo 'selected="selected"'?>
>2000</option>

$year 包含来自任何地方的年份。这假设 $year 是一个字符串。如果$year 是整数,则将条件更改为:

  if(isset($year) && $year === 2000)

对于单选按钮和复选框,只需将 selected="selected" 替换为 checked="checked"

【讨论】:

如果 $year 是整数,则从条件中删除单引号:if(isset($year) &amp;&amp; $year === 2000)【参考方案3】:

对于选择,您需要循环遍历数据并检查该值是否等于所选值(至少这是最容易做到的),这会更加紧张。但是您可以应用与复选框/收音机类似的技术。

<input type="radio" name="radio1" value="1" <?php echo (!empty($_POST['radio1']))?'checked':''?>> 
<input type="checkbox" name="chkbox1" value="1" <?php echo (!empty($_POST['chkbox1']))?'checked':''?>>

由于您正在创建表 PHP 端,这里是代码:

  $years = array('2000', '2001', '2002');

  $table .= "<select name='year' id='year'>";
  foreach ($years as $year) 
      $table .= "<option id='" . $year . "' value='" . $year . "' " . 
            (($_POST['year'] == $year)?'selected':'') . ">" . $year . "</option>\n";
  

  $table.="</select>";

应该让您走上选择语句的正确轨道。这 ? and : 组成三元运算符,它是一个缩短的 if / else 语句。

【讨论】:

谢谢,我需要这样的东西。你知道客户端的 SELECT 是否有类似的代码? (就像你放在那里的复选框和收音机的例子)? php 没有客户端。您只需要在正确的位置回显正确的代码。这也是您对输入类型的内联样式所做的事情.. 要在客户端执行此操作,您需要使用 javascript 并告诉 javascript 应该选择什么,因此 javascript 文件需要以某种方式或形式植入变量。【参考方案4】:

您可以有条件地在 PHP 中回显 selected,具体取决于要选择的值。

【讨论】:

检查其他答案,它们比我的要好;-)【参考方案5】:
<?php

$selected[$_GET['year']] = "selected='selected'";

$table.="
 <select name='year' id='year'>
   <option id='2000' value='2000' " . $selected['2000'] . ">2000</option>
   <option id='2001' value='2001' " . $selected['2001'] . ">2001</option>
   <option id='2002' value='2002' " . $selected['2002'] . ">2002</option>
 </select>";

echo $table;
?>

【讨论】:

以上是关于如何让表单元素“记住”选择?的主要内容,如果未能解决你的问题,请参考以下文章

23.处理表单元素

如何在 PHP 中“记住”选择的表单值?

基于 HTML/JavaScript 中的用户选择动态删除表单元素

jquery如何在子表单div中选择表单元素

表单元素之搭车系

如何在提交没有特定库的表单时验证选择元素?