如何在表单提交后在“选择”字段中保留选定的值?

时间:2013-05-09 09:17:41

标签: php

我有一个主页面,我用它来上传票据,我有选择字段,我想保留用户在提交表格之前选择的值,但它没有发生......

这是我的选择字段代码:

<select name="XiD" id="XiD">
<option value="Blank" selected="selected">Please Select...</option>
<option value="AAA">AAA</option>
<option value="BBB">BBB</option>
<option value="CCC">CCC</option>
<option value="DDD">DDD</option>
<option value="EEE">EEE</option>
<option value="FFF">FFF</option>
</select>

只是要添加,此Xid在提交之前发布

$XiD = $_POST['XiD'];

我试着使用这个脚本:

更新 - 从$ _GET更改为$ _POST但仍无效...

<script type="text/javascript">
  document.getElementById('XiD').value = "<?php echo $_POST['XiD'];?>";
</script>

我的jquery版本使用:jquery-ui-1.10.2和jquery-1.9.1

5 个答案:

答案 0 :(得分:4)

像这样使用jQuery。

<script type="text/javascript">
 jQuery(document).ready(function(){

  jQuery('select#XiD').val('<?php echo $_POST['XiD'];?>');

 });
</script>

答案 1 :(得分:2)

您正在使用PHP生成HTML。绝对没有必要使用第三种语言来指示HTML应该如何!

<select name="XiD" id="XiD">
<option value="Blank"<?=$XiD=='Blank' ? ' selected="selected"' : ''?>>Please Select...</option>
<option value="AAA"<?=$XiD=='AAA' ? ' selected="selected"' : ''?>>AAA</option>
...
</select>

或者,更好的是,使用数组简化代码并避免编写难以维护的重复代码:

<?php

$options = array(
    'Blank' => 'Please Select...',
    'AAA' => 'AAA',
    'BBB' => 'BBB',
    'CCC' => 'CCC',
    'DDD' => 'DDD',
    'EEE' => 'EEE',
    'FFF' => 'FFF',
);

<select name="XiD" id="XiD">
<?php foreach(options as $k => $v){ ?>
    <option value="Blank"<?php echo $XiD==$k ? ' selected="selected"' : ''?>>Please Select...</option>
<? } ?>
</select>

答案 2 :(得分:0)

根据您的问题,您似乎正在使用POST方法(因为您正在获得$XiD = $_POST['XiD'];的价值)并使用GET来检索值。

因此,请使用document.getElementById('XiD').value = "<?php echo $_POST['XiD'];?>";

而不是

document.getElementById('XiD').value = "<?php echo $_GET['XiD'];?>";

答案 3 :(得分:0)

我会创建一个函数来检查当前GET值是否与列表中的选项相同,在这种情况下,返回所需的属性以使其默认选中,即selected="selected"

这应该有效:

<?php
function isSelected($value){
    if($value == $_GET['XiD']){
        return 'selected="selected"';
    }else{
        return '';
    } 
}
?>

<select name="XiD" id="XiD">
    <option value="Blank" <? echo isSelected('Blank');?>>Please Select...</option>
    <option value="AAA" <? echo isSelected('AAA');?>>AAA</option>
    <option value="BBB" <? echo isSelected('BBB');?>>BBB</option>
    <option value="CCC" <? echo isSelected('CCC');?>>CCC</option>
    <option value="DDD" <? echo isSelected('DDD');?>>DDD</option>
    <option value="EEE" <? echo isSelected('EEE');?>>EEE</option>
    <option value="FFF" <? echo isSelected('FFF');?>>FFF</option>
</select>

答案 4 :(得分:0)

经过尝试,这个“解决”没有任何作用。之前对w3school进行了一些研究,并记得有关于保持对无线电的价值的解释。但它也适用于选择选项。看这里的例子。试试吧,玩吧。

<?php
$example = $_POST["example"];
?>
<form method="post">        
<select name="example">
    <option <?php if (isset($example) && $example=="a") echo "selected";?>>a</option>
    <option <?php if (isset($example) && $example=="b") echo "selected";?>>b</option>
    <option <?php if (isset($example) && $example=="c") echo "selected";?>>c</option>
</select>
<input type="submit" name="submit" value="submit" />
</form>
相关问题