【问题标题】:Dynamically set the select option index with php用php动态设置选择选项索引
【发布时间】:2013-01-15 18:35:35
【问题描述】:

我今天正在处理一个 PHP 表单,我需要一些关于 <select> & <option> 标签的帮助。我想要做的是从$_GET 中获取一个已经在<option> 列表中的值,并将其显示为索引。我的表单的工作方式是用户选择一个位置并点击更新按钮。当页面提交时,它通过$_GET 发送值,然后使用它从数据库中获取正确的信息。在查看上述信息后,他们可以选择删除它,这是我需要的地方。问题是他们必须重新选择位置才能删除它。我需要该值保持选中状态。

例如,假设用户在选择框中单击 NJ 并单击更新。该页面将提交并显示餐厅评论。我希望选择框保持 NJ 的值,直到用户更改它。

我的快速解决方法是在<option> 列表的开头使用以下代码:

<?php
    if($_GET['chooseLocation'])
        echo "<option>$_GET['chooseLocation']</option>";
?>

唯一的缺点是它会显示 NJ 两次。

1) 我走在正确的轨道上吗?

2) 由于我使用$_GET 并将信息存储在 URL 中,我应该使用 javascript 来代替吗?

我浏览了大约 15 个问题,但没有一个回答我的问题。如果您认为这是转发或复制,请将原件发布在 cmets 中,以便我看到。

【问题讨论】:

    标签: php javascript option


    【解决方案1】:

    我不知道你的全部代码,只知道那一小部分。我通常这样做的方式是通过selected 属性和我的物品的某种ID。我猜您正在从数据库中读取信息,而您从一页到另一页维护的信息就是该选项的值。我做这样的事情:

    <?php
    for( $i = 0; $i < count($options); ++$i ) {
        echo "<option";
        if( $_GET['chooseLocation'] && $_GET['chooseLocation'] == $options[$i] ) {
            echo "selected";
        }
        echo ">{$options[$i]}</option>";
    }
    ?>
    

    或者,您可以假设现在几乎每个用户都有 JavaScript。因此,您实际上可以通过在 DOM 就绪或页面加载时(例如使用 jQuery)“附加”selected 属性来对 JavaScript 执行相同操作。当然还有少数人拒绝使用 JavaScript,但我现在没有统计数据。

    【讨论】:

    • 我的印象是selected 已被弃用,但根据 w3schools 的说法并非如此。谢谢,动态添加会比我的方式容易得多。
    • @MichaelGarrison 使用 HTML5 甚至不需要遵循多余的 selected="selected"。 ;)
    【解决方案2】:

    您可以像现在一样正常提交表单,但附加一个功能:

    <form obsubmit="return stay_freeze()" .. >
    

    并为您的选择提供 id

    function stay_freeze(){
        var opt = $("option[val=ID]");
        opt.attr('selected','selected');​​ 
    }
    

    就是这样!

    或捕捉选择的内容并执行此操作:

    function stay_freeze() {
      var catched_value = $('#your_select_id').val();
      $('#your_select_id').val(catched_value);
    }
    

    【讨论】:

    • 另一个很好的答案!有了这个,你将如何获得实际价值?您是否必须为每个 &lt;option&gt; 标签添加一个 ID,或者它是否可以从 URL 中提取信息?
    • @Micheal,不,select 的 ID 就足够了,如果您使用此 id 检索值,您将获得选定的值。顺便说一句:您在提交表单之前和点击提交按钮之后调用 js 函数。所以如果你问:$('#select_id').val();,你手里就有选择的选项的价值
    • 太棒了!我喜欢这个,并将它放在方便将来参考的地方,但我会在这个上使用 php 答案。我的客户告诉我,他们的很多用户确实关闭了 javascript,所以 php 是处理这种情况的方法。不过非常感谢!
    猜你喜欢
    • 2021-03-08
    • 2012-12-04
    • 2012-05-02
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多