清除页面退出时的下拉选择值,以便返回按钮可以重新选择



我基本上是在回答这个问题,但也许有人有另一个想法。你可以使用onpopstate函数,但我发现这更容易处理,而且跨浏览器兼容,即使是旧浏览器。

我有一个由数据库查询填充的下拉选择框。在这种情况下,它只找到了一个相关的城市。选择该城市后,用户将转到另一个页面,然后按下Back按钮,将用户返回到所选内容仍处于选定状态的页面,这将防止再次选择该内容,除非先进行另一个选择。因此,我添加了一个onClick事件,以在离开页面之前更改Selected默认值。

<div>
<select class="DropList"  name="CitySelect" id="CitySelect"
onchange="if(options[selectedIndex].value){location = options[selectedIndex].value}"
onclick="GetSelect()">
<option value="" selected>Select City</option>
<option value="city.php?s=Montana&cn=Yellowstone&CalNav=0&c=Billings">Billings</option>
</select>
</div>

JavaScript

<script type="text/javascript">
function GetSelect()
{
document.getElementById('CitySelect').value = "";
}
</script>

侦听click事件并不理想,原因如下:

  • 它是触发当你点击选择打开它,而不是当你实际选择一个选项。所以当你打开select时,你的代码会清除这个值,这会导致一些抖动。
  • 如果你用键盘选择一个值,它不会被触发。

所以我建议使用blur事件:

$('#CitySelect').on('blur', (e) => (e.target.value = ''));

在选择值之后,选择字段将仍然具有新值,但是一旦您离开该字段("blur")

看看这个小提琴

最新更新