【发布时间】:2016-10-26 00:37:39
【问题描述】:
我的表单上有一个下拉字段。当我从下拉列表中选择一个值时,它会立即将焦点重置到表单的顶部。
为了更清楚,我在屏幕顶部有一个下拉菜单和几个输入字段。用户必须向下滚动到实际的下拉字段才能选择它。一旦他们选择了值,页面就会滚动回顶部。
一旦用户从下拉列表中选择了一个值,如何保持用户在表单上选择的位置? [注意:它不会在堆栈溢出时显示,您必须复制并粘贴代码并在您自己的浏览器上尝试]。
我知道这与 HTML 中的代码有关。
document.getElementById("locale").options[value].selected;
window.location.hash="country-select";
因为我不断收到错误消息: 未捕获的类型错误:无法读取未定义的“已选择”属性
目前为止
// creates the page dynamically
function GetSelectedItem(){
var option = document.getElementById("locale").value;
}
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>MyWebsite</title>
<link rel="stylesheet" href="languageswitcher.css">
<script>
document.getElementById("locale").addEventListener('change', function(event) {
var selected = event.target.options[ event.target.selectedIndex ].value
console.log(selected);
window.location.hash = selected;
});
</script>
</head>
<body>
<header>
<div id="country-select">
<form action="" method = "get">
<select id= "locale" name="locale">
<option value="en_US">English(US)</option>
<option value="en_GB">English(UK)</option>
<option value="bg_BG">Bulgarian</option>
<option value="cs_CS">Czech</option>
<option value="da_DK">Danish</option>
<option value="de_DE">German</option>
<option value="ek_GR">Greek</option>
<option value="es_ES">Spanish</option>
<option value="et_ET">Estonian</option>
<option value="fi_FI">Finnish</option>
<option value="fr_FR">French</option>
<option value="hu_HU">Hungarian</option>
<option value="it_IT">Italian</option>
<option value="lt_LT">Lithuanian</option>
<option value="lv_LV">Latvian</option>
<option value="nl_NL">Dutch</option>
<option value="no_NO">Norwegian</option>
<option value="pl_PL">Polish</option>
<option value="pt_PT">Portugese</option>
<option value="ro_RO">Romanian</option>
<option value="sk_SK">Slovak</option>
<option value="sl_SL">Slovenian</option>
<option value="sv_SE">Swedish</option>
</select>
<input value="Select" type="submit"/>
</form>
</div>
</header>
<script src="jquery_1.5.min.js"></script>
<script src="languageswitcher.js"></script>
</body>
</html>
感谢大家的帮助,我只是想自学,到目前为止一切顺利,但我已经坚持了大约 2 周,我不知道为什么 .selected 根本不起作用。此外,如果有任何其他有效的方法来执行此代码,例如使用数组,也很高兴知道。再次感谢
【问题讨论】:
-
使用:selBox.options[selBox.selectedIndex].value 其中 selBox 是您的下拉框(我认为在您的情况下是区域设置)。由于 value 没有 Selected 属性,您会收到错误消息。由于错误,光标失去焦点并默认位于屏幕/页面的顶部。
-
@TonyDuffill 谢谢托尼,但是,它修复了错误,但它仍然无助于解决我的整体问题。例如,如果我将语言切换为意大利语并点击“提交”,链接会完全改变,但选择框会一直回到英语(美国)
标签: javascript html