![](/img/trans.png)
[英]Can't set focus() on a tabindexed element with children in mobile Safari?
[英]Why can't set focus on element with nextElementSibling.focus() and parentNode.children[0].focus()?
我想在enter
keydown時移動鼠標焦點,以模仿enter
作為tab
。
function jump(event){ var ob = event.target; if(event.keyCode == 13){ if(ob.nextElementSibling){ ob.nextElementSibling.focus(); } else{ ob.parentNode.children[0].focus(); } } } document.body.addEventListener("keydown",jump,true);
content:<input id="1th" type="text"> <br/> content:<textarea id="2th" cols=6 rows=5></textarea> <br/> content:<input id="3th" type="text"> <br/> content:<input id="4th" type="text">
我的期望:
當您鍵入一些字符(例如,在id
為“ 1th”的input
進行test
並按Enter鍵時,鼠標焦點將跳到id
為“ 2th”的input
。
當您鍵入一些字符(例如,在id
為“ 4th”的input
進行test
並按Enter鍵時,鼠標焦點將跳到id
為“ 1th”的input
。
我測試了我的代碼,沒有錯誤信息發生,但是無法實現我的目標。
如何解決?
我在第23行設置了斷點,但仍然找不到任何內容。
由於每個聊天討論,你的問題是, nextElementSibling
在<br/>
。 如果您不想使用nextElementSibling.nextElementSibling
,這里有兩個選項可以為您提供幫助:
或者:
刪除<br>
並使用CSS添加必要的margin-bottom
。
要么:
將類添加到您的input / textArea元素,並使用jQuery和.next('className')
函數。 Javascript中有等效項,但是它將添加許多不必要的代碼。
如果唯一的用途是一個函數,我絕對建議您選擇第一個選項,而不是加載整個庫。
根據聊天與callback
。
1.Format1:腳本在最前面,添加window.onload
。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<script>
window.onload = function(){
function jump(event){
var ob = event.target;
if(event.keyCode == 13){
if(ob.nextElementSibling != null){
ob.nextElementSibling.nextElementSibling.focus();
}
else {
ob.parentNode.children[0].focus();
}
}
}
document.body.addEventListener("keydown",jump,true);
}
</script>
</head>
<body>
content:<input id="1th" type="text">
<br/>
content:<textarea id="2th" cols=6 rows=5></textarea>
<br/>
content:<input id="3th" type="text">
<br/>
content:<input id="4th" type="text">
</body>
</html>
格式2:腳本放在id為4th
的最后一個輸入的末尾。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
content:<input id="1th" type="text">
<br/>
content:<textarea id="2th" cols=6 rows=5></textarea>
<br/>
content:<input id="3th" type="text">
<br/>
content:<input id="4th" type="text">
<script>
function jump(event){
var ob = event.target;
if(event.keyCode == 13){
console.log(ob.nextElementSibling.tagName);
if(ob.nextElementSibling.tagName == "BR"){
ob.nextElementSibling.nextElementSibling.focus();
}
else if(ob.nextElementSibling.tagName == "SCRIPT"){
ob.parentNode.children[0].focus();
}
}
}
document.body.addEventListener("keydown",jump,true);
</script>
</body>
</html>
整個代碼與位置相關,腳本內容在html文件中的位置不同,您應該為此編寫不同的js代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.