簡體   English   中英

為什么不能通過nextElementSibling.focus()和parentNode.children [0] .focus()將焦點設置在元素上?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM