我有这个:
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),我如何设置选择以保持显示?
通过
告诉浏览器选择下拉列表的哪一行是当前选择的项<option selected="selected" .....>
现在您只需要知道用户选择了什么,当您在$_GET或$_POST数组中单击submit时,这将发送到表单。由于您没有在<form>
上指定method
,因此它将是$_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>';
}
没错。当您没有指定值并且刷新页面时,所选值将变为默认值(第一个)。您可以使用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);
}
检查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())
与选定值
根据get值向选项添加选定属性,并在页面加载时运行showUsers(选定值)函数。使用js获取所选值