不关注动态添加的文本框

时间:2018-11-19 07:33:13

标签: jquery html

每次单击按钮时,都会添加一个新文本框,我希望该文本框专注于加载。如果我再次单击该按钮,我希望焦点转移到新添加的文本框中。

  • 尝试了自动对焦,但仅在第一次使用。
  • 也尝试过$(“#xyz”)。focus(),但无法正常工作 要么。

2 个答案:

答案 0 :(得分:2)

如果我理解您的意思正确,那么您正在寻找类似以下示例的内容:

$('button').on('click', function () {
  var textBox = $('<input type="text">');
  
  textBox.appendTo('body');
  
  var interval = setInterval(function () {
    textBox.focus();
    
    if (textBox.is(':focus')) {
      clearInterval(interval);
    }
  }, 100);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<button type="button">Add textbox</button>

在将新输入添加到body标签之后,我们将focus设置为元素。但是有时它不会立即聚焦,因此我们需要使用setInterval在100毫秒后再次检查聚焦。然后,当元素被聚焦时,我们使用clearInterval方法清除间隔。

答案 1 :(得分:0)

这是一个实现您所追求的目标的小例子。在此示例中,将在现有输入字段之后添加一个输入字段,并使用focus()函数将其设置为焦点。

let newInput = document.createElement( "input" );
newInput.setAttribute( "type", "text" );


let previousInput = document.getElementById( "test" );
previousInput.parentNode.insertBefore( newInput, previousInput.nextElementSibling );

newInput.focus();
<input type="text" id="test">

希望对您有帮助。