如何让表单元素“记住”选择?
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) && $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;
?>
【讨论】:
以上是关于如何让表单元素“记住”选择?的主要内容,如果未能解决你的问题,请参考以下文章