0

我今天正在处理一个 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 个问题,但没有一个回答我的问题。如果您认为这是转发或复制,请在评论中发布原件,以便我看到。

4

2 回答 2

2

我不知道你的整个代码,只知道那一小部分。我通常这样做的方式是通过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。selected因此,您实际上可以通过在 DOM 就绪或页面加载时(例如使用 jQuery)“附加”属性来对 JavaScript 做同样的事情。当然仍然有少数人拒绝使用 JavaScript,但我现在没有统计数据。

于 2013-01-15T18:43:26.033 回答
1

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

<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);
}
于 2013-01-15T18:44:34.190 回答