我有这个:
echo '<form>
<select name="users" onchange="showUser(this.value)">';
echo '<option value="">Select a person:</option>';
$result = $conn->query("SELECT firstName,agendaID FROM agendas WHERE ownerID='" . $_SESSION["id"] . "'");
while ($row = $result->fetch_assoc()) {
echo '<option value="' . $row['agendaID'] . '">' . $row['firstName'] . '</option>';
}
$result->close();
echo '
</select>
</form>';
showUser()
脚本将根据从菜单中选择的内容在表格中打印值。问题是刷新页面后,select选项会丢失并返回默认值,因此表格不再显示。拥有我通过GET
的ID(当前所选选项的ID),如何设置选择以保持显示?
答案 0 :(得分:1)
您可以使用
告诉浏览器选择下拉列表的哪一行是当前选定的项目<option selected="selected" .....>
所以现在你只需要知道用户选择了什么,当你点击$ _GET或$ _POST数组中的提交时,这将被发送到表单。由于您未在method
上指定<form>
,因此它将是$ _GET数组。
所以你需要测试哪个被选中并改变这样的代码:
while ($row = $result->fetch_assoc()) {
$sel = (isset($_GET['users']) && $_GET_['users'] == $row['agendaID'] )
? 'selected="selected"'
: '';
echo '<option ' . $sel . ' value="' . $row['agendaID'] . '">' . $row['firstName'] . '</option>';
}
答案 1 :(得分:0)
没错。如果未指定值并刷新页面,则所选值将变为默认值(第一个)。您可以使用localStorage保存所选的选项。添加你的showUser函数:
localStorage.setItem('usersValue', THE_JAVASCRIPT_VARIABLE);
这会将所选值存储在localStorage中。要重置所选值,您可以使用JQuery:
var selectedValue = localStorage.getItem('usersValue');
if(selectedValue !== null)
{
$('select[name="users"]').val(selectedValue);
showUser(selectedValue);
}
答案 2 :(得分:0)
只需检查agentID
是否与_GET
中的echo '<form>
<select name="users" id="users" onchange="showUser(this.value)">';
echo '<option value="">Select a person:</option>';
$sessionId = (int) $_SESSION['id'];
$result = $conn->query("SELECT `firstName`, `agendaID` FROM `agendas` WHERE `ownerID` = '{$sessionId}'");
while ($row = $result->fetch_assoc()) {
$extra = '';
if (!empty($_GET['ID']) && (int) $row['agendaID'] == (int) $_GET['ID']) {
$extra = 'selected';
}
echo "<option value='{$row['agendaID']} {$extra}>{$row['firstName']}</option>";
}
$result->close();
echo '</select>
</form>';
相同:
$(document).ready()
在showUser($("#users option:selected").val())
触发器{{1}}上选择值
答案 3 :(得分:0)
根据您的获取值将所选属性添加到选项,并在页面加载时运行showUsers(选定值)函数。使用js获取所选值。