【问题标题】:'Remember' form drop list value when submitting to SELF?提交给SELF时“记住”表单下拉列表值?
【发布时间】:2009-12-27 00:24:20
【问题描述】:

我知道在将表单提交给自己时如何“记住”一些表单值,在这种情况下,因为图片上传功能需要将表单提交给自己。我只是想要这样,如果用户填写了所有字段然后上传了图像,则表单不会被重置(清除)。

我已经在常规字段和复选框中解决了这个问题,如下所示:

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

但是如何使用下拉列表来做到这一点?或单选按钮? 'SELECT' 列表中没有 value 选项,即使我已经尝试在 SELECT 语句中写入 value。没用!

那么,如何使用 PHP(或 JAVASCRIPT)设置 SELECT(下拉列表)值?

如果您需要更多信息,请告诉我,谢谢!

【问题讨论】:

  • 除此之外:您有一个跨站点脚本安全漏洞。请始终记住 htmlspecialchars() 您在 HTML 中回显的任何文本。

标签: php html


【解决方案1】:

对于选择,您需要将每个选项与您发布的值进行比较,并单独处理。只需在循环中打印出您的选项,然后根据之前发布的值测试每个值。如果匹配,请将selected 添加到该特定选项的属性中。

$color = $_POST["colors"];
$colors = array("red","green","blue");

<select name="colors">
<?php foreach ($colors as $option) { ?>
  <option<?php print ($option == $color) ? " selected" : ""; ?>>
    <?php print $option; ?>
  </option>
<?php } ?>
</select>

【讨论】:

    【解决方案2】:

    其实发现可以用javascript设置selectedIndex...

    所以我可以在提交表单之前将 selectedIndex 放入隐藏的输入中,然后获取该 selectedIndex 并使用 javascript 函数对其进行设置...这很棘手,但在这种情况下更适合我...

      document.getElementById("select").selectedIndex=nr;
    

    谢谢乔纳森!

    【讨论】:

    • 我会采用 Jonathan 的方法,这是执行此操作的标准习惯用法。用 JS 做这件事会使你的应用程序不必要地依赖于 JavaScript,并且会破坏浏览器记住你在返回/前进时选择的最后一个值的能力。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-31
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多