[英]Refilling drop down menu selection after form submission validation
我正在處理php中的注冊/注冊表單,如果一切未正確驗證,則該表單將重新提交/保留用戶輸入。 我有文本框,密碼輸入和單選按鈕都可以使用,但是這些下拉菜單更加麻煩。 我使用的php代碼適用於文本框,但不適用於這些選擇/選項,是否有更好的方法來做到這一點? 為了節省空間,我刪除了大多數選項,但是每種選項分別使用0到11個月,1-31天和1900-2013年。
<select id="month" name="month" value="<?php
if(isset($_POST['month']))
echo htmlspecialchars($_POST['month'])?>">
<option value="default">Month</option>
<option value="0">January</option>
...
<option value="11">December</option>
</select>
<select id="formDay" name="day" value="<?php
if(isset($_POST['day']))
echo htmlspecialchars($_POST['day'])?>">
<option value="default">Day</option>
<option value="1">1</option>
...
<option value="31">31</option>
</select>
<select id="formYear" name="year" value="<?php
if(isset($_POST['year']))
echo htmlspecialchars($_POST['year'])?>">
<option value="default">Year</option>
<option value="2013">2013</option>
...
<option value="1900">1900</option>
</select>
你做錯事了。
請在每個選項中設置條件,如下所示
<option value="2013" <?php if(isset($_POST['year']) && $_POST['year']==2013){ echo "selected";}?>>2013</option>
以相同的方式使用一個月。
使用selects不能設置值...而是必須將一個選定的屬性添加到選擇選項元素中。
我通常使用這樣的函數來建立我的選擇
function showSelect($name, $options, $selected, $attr = array()){
$str = "<select name='".$name.'"';
foreach($attr as $name=>$val){
$str.= " ".$name."='".$val."'";
}
$str.=">";
foreach($options as $k=>$val){
$str.= "<option value='".$val."'".($val==$selected?" selected='selected'":"").">".$k.'</option>';
}
$str.="</select>";
}
$ name是元素的名稱$ options是形式為“ option_value” =>“ option_label”的數組$ selected是選擇選項的值$ attr是要放置在select元素上的其他屬性的數組(樣式ID等)
例如
$days = array();
for($d = 1; $x<=31; $x++){
$days[(string)$d] = (string)$d;
}
echo showSelect("formDays", $days, $_POST["formDays"], array("id"=>"formDays"));
您可以嘗試一下,動態生成值
天:
echo "<select name='day'>";
for( $i = 1; $i <= 31; $i++ )
{
$selectedDay = isset($_POST['day']) && $_POST['day'] == $i ? 'selected="selected"' : '';
echo "<option $selectedDay value=$i>$i</option>";
}
echo "</select>";
月:
$months = array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
echo "<select name='month'>";
for( $i = 0; $i <= 11; $i++ )
{
$m = $months[$i];
$selectedMonth = isset($_POST['month']) && $_POST['month'] == $i ? 'selected="selected"' : '';
echo "<option $selectedMonth value=$i>$m</option>";
}
echo "</select>";
年:
echo "<select name='year'>";
for( $i = 2013; $i >= 1900; $i-- )
{
$selectedYear = isset($_POST['year']) && $_POST['year'] == $y ? 'selected="selected"' : '';
echo "<option $selectedYear value=$i>$i</option>";
}
echo "</select>";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.