我理解标题可能有点模糊,但希望我能在这里解释一下。
我们有一个页面,用户可以修改数据库的某些字段。正在修改的字段随着页面顶部下拉列表的选择而变化。
假设我们的这个表的名称为restaurants
:
-----------------------------------------------------------
| id | name | items |
-------------------------------------------------------------
| 1 | fryking | burger, fries, shake |
| 2 | burgertown | nuggets, chicken sandwich |
-----------------------------------------------------------
加载后,页面应如下所示:
[ CHOOSE RESTAURANT ] [v]
ITEMS:
选择“fryking”后,用户可以:查看fryking的项目,添加新项目,删除不需要的项目。
[ fryking ] [v]
ITEMS:
[ (txtbox) ] [ADD ITEM]
1. burger [DELETE]
2. fries [DELETE]
3. shake [DELETE]
一旦选择了餐厅,用户应该能够添加,删除等,而不会将下拉列表恢复为“SELECT RESTAURANT”并强制他们再次选择它。
现在,我们可以在选择餐厅时显示相应的信息,但在处理“添加”或“删除”后没有选择餐厅。
抱歉,我无法解释这个问题。我知道这已经在其他网站上完成了1000次,所以有人必须了解我在寻找什么。
如果我能说清楚的话,请告诉我。
非常感谢,
Justian Meyer
编辑:
以下是处理删除的方式(各自以不同的形式)。
$page = str_replace('%7E', '~', $_SERVER['REQUEST_URI']);
...
<form method="post" action="'.$page.'">
<input type="hidden" name="item_id" value="'.$i.'"> // $i refers to the value from the loop
<input type="submit" name="delete_item" value="Delete">
</form>
我可以做些什么来将每个按钮压缩成一个表单并仍然正确处理它们?
答案 0 :(得分:1)
我不知道你使用什么技术,但在asp.net mvc我会做这样的事情
执行httppost时,我会保存会话中所选下拉项的值(或id或其他)(甚至是控制器中的变量),并在发布后将其返回给视图并设置该会话或模型信息为默认值。
你能说出你正在使用什么技术吗?
答案 1 :(得分:1)
JavaScript的: - 在onload事件中设置下拉列表的值。
PHP: - 通过说出
之类的内容来设置所选标签<?
if ($_POST)
{
$ddlRestaurantPersistValue = $_POST['ddlRestaurant'];
}
?>
,HTML将是
<select id="ddlRestaurant" name="ddlRestaurant">
// build the options here if you are doing a database while loop
// check to see if the option value == $ddlRestaurantPersistValue and then add
// selected='selected' to the attributes of the option
</select>
答案 2 :(得分:0)
我不会悄悄得到你的意思。
一旦选择了餐厅,用户应该能够添加,删除等,而不会将下拉列表恢复为“SELECT RESTAURANT”并强制他们再次选择它。
考虑到我不明白为什么SELECT RESTAURANT卷土重来,为什么不用javascript代码选择你想要的东西呢?
您可以绑定onchange侦听器
答案 3 :(得分:0)
嗯,我认为这样的事情最好通过AJAX调用处理,但我不建议你重新编写页面来解决一个问题。
您必须告诉您的表单处理器当前餐厅是什么,因此可以在保存后正确设置。假设您在页面上有很多表单是有充分理由的,那么您将不得不将其填入并在每个表单中添加隐藏的restaurant
输入。当用户更改餐厅值(通过javascript)时更新它们,并在保存后构建页面时重置餐厅。