【发布时间】:2017-04-12 04:51:22
【问题描述】:
如何在 <input> 元素中按下 Enter 键将焦点转移到页面上的下一个 <input> 元素?
我有一个 for 循环,它创建 <li> 元素,其中包含 <input> 元素。我需要这样做,当用户在键盘上按 Enter 键时,网站将专注于下一个输入字段,以便用户可以输入下一个玩家名称,而无需在使用鼠标和键盘之间切换。
我认为使用nextSibling 属性是解决方案,但它不会起作用,因为<input> 元素在技术上没有任何兄弟姐妹,因为它们每个都在内部/是不同<li> 元素的子元素。
这是我的 JavaScript:
for ( var i = 1 ; i <= numberOfPlayers ; i++ ){
var inputElement = document.createElement('input');
var liElement = document.createElement('li');
inputElement.setAttribute( 'type' , 'text' );
inputElement.setAttribute ( 'id' , 'name-input-' + i );
inputElement.setAttribute ( 'class' , 'name-input');
inputElement.setAttribute ( 'placeholder' , 'Enter a name for player ' + i );
liElement.appendChild(inputElement);
nameInputArray[i] = inputElement;
document.getElementById('name-list').appendChild(liElement);
inputElement.addEventListener( 'keypress' , function(event){
if ( event.which === 13 ) {
alert(this);
document.getElementById( 'name-input-' + (i+1)).focus();
}
} );
}
我尝试在 for 循环和字符串连接中使用“i”来选择下一个元素的 ID,但“i”变量也不起作用,因为在代码运行时“i”等于整个 for 循环运行后可以达到的最大数字。
【问题讨论】:
-
你需要了解闭包。
标签: javascript