【问题标题】:how to retain selected values in Select field after form submission?表单提交后如何保留选择字段中的选定值?
【发布时间】:2013-05-03 17:25:01
【问题描述】:

我有一个用于将票证上传到数据库的主页,我有一个选择字段,我想保留用户在提交表单之前选择的值,但它没有发生......

这是我的选择字段代码:

<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

【问题讨论】:

  • document.getElementById('XiD').value = "&lt;?php echo $_POST['XiD'];?&gt;"; $_POST,而不是$_GET
  • 你的form标签里面的方法是什么,post还是get?
  • $_GET['XiD'] 你如何通过'$_GET'获得变量

标签: php


【解决方案1】:

您正在使用 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】:

    在尝试了所有这些“解决”之后,没有任何效果。之前对 w3school 做过一些研究,记得有关于保持广播价值观的解释。但它也适用于 Select 选项。请参阅此处的示例。试一试并玩一下。

    <?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>
    

    【讨论】:

      【解决方案3】:

      像这样使用 jQuery。

      <script type="text/javascript">
       jQuery(document).ready(function(){
      
        jQuery('select#XiD').val('<?php echo $_POST['XiD'];?>');
      
       });
      </script>
      

      【讨论】:

      • 我已将代码更改为此代码并删除了header("Location: wireless_new.php");,这解决了我的问题...
      【解决方案4】:

      我会创建一个函数来检查当前的 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>
      

      【讨论】:

        【解决方案5】:

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

        所以,使用document.getElementById('XiD').value = "&lt;?php echo $_POST['XiD'];?&gt;";

        而不是

        document.getElementById('XiD').value = "&lt;?php echo $_GET['XiD'];?&gt;";

        【讨论】:

        • 我在我的表单中使用 method=POST,我将脚本更改为 document.getElementById('XiD').value = "&lt;?php echo $_POST['XiD'];?&gt;"; 并且仍然无法正常工作...我使用按钮以 type=submit 提交表单
        • 您的表单操作页面是什么?一定是这样的:&lt;form name="search_field" id="search_field" action="playreport.php" method="post" &gt;
        • 这是我的表单的样子:&lt;form id="form" name="form" method="post" action="wireless_new.php" onsubmit="return validateDBLoad()"&gt;
        • 你为什么使用id="form" name="form"?为什么不放 id 并命名其他东西呢? #有什么原因吗??
        • 我找到了...我再次查看了我的代码并发现了这个:header("Location: wireless_new.php"); 这就是我的页面刷新到原始状态的原因...
        猜你喜欢
        • 2016-12-15
        • 2023-03-14
        • 2019-09-11
        • 1970-01-01
        • 1970-01-01
        • 2023-04-04
        • 2016-05-11
        • 2015-01-20
        • 1970-01-01
        相关资源
        最近更新 更多