Javascript 敲除具有多个输入的焦点

Javascript 敲除具有多个输入的焦点,javascript,html,knockout.js,Javascript,Html,Knockout.js,我正在使用knockoutjs,在我的模板中,我有一个foreach循环,它将显示它从JSON数据中获取的数据。我想将焦点设置为屏幕上的第一个输入。当屏幕上只有一个输入时,它可以完美地工作,但当它到达第二个屏幕时,有两个输入,它只将焦点设置为屏幕上的最后一个输入屏风 这是我的HTML: <div id="section"> <span data-bind="template: { name: 'screenTemplate', foreach: s

我正在使用knockoutjs,在我的模板中,我有一个foreach循环,它将显示它从JSON数据中获取的数据。我想将焦点设置为屏幕上的第一个输入。当屏幕上只有一个输入时,它可以完美地工作,但当它到达第二个屏幕时,有两个输入,它只将焦点设置为屏幕上的最后一个输入屏风

这是我的HTML:

<div id="section">
<span data-bind="template: { name: 'screenTemplate', foreach: screens, as: 'screen'}"></span>
<script type="text/html" id="screenTemplate">
    <!-- ko if: showFlds -->
    <!-- ko if: showNote -->
    <span data-bind="template: { name: 'fldTemplate', foreach: flds}"></span>
    <!--/ko-->
    <!--/ko-->
</script>

<script type="text/html" id="fldTemplate">
    <form>
    <span class="text" data-bind="text: fieldName"></span>
    <br/>
    <input type="text" class="inputVal" data-bind="valueUpdate: 'afterkeydown', value: inputValue, disable: (inputValue() == expectedValue()), visible:(inBool() != false)" />
    <br/>
  </form>
</script>

<div data-bind="visible:screens()[cScreen()].rdtNote() === true">
    <h2 style="color: red"><span data-bind="text: rdtNotification()[0].description()"></span></h2>
    <button data-bind="click: makeHidden">Acknowledged</button>
</div>
但是,当使用此选项时,当屏幕发生变化时,它不会自动选择下一个输入。是否有办法使其工作?

解决了我的问题:

$(document).ready(function() {
 $('form').find('input[type=text],textarea,select').filter(':input:enabled:visible:first').focus();
});

$(document).keyup(function(e){
 $('form').find('input[type=text],textarea,select').filter(':input:enabled:visible:first').focus();
});

var e = $.Event("keyup", { keyCode: 13}); //"keydown" if that's what you're doing
$("body").trigger(e);
使用此选项,我可以将焦点设置为第一个可见的启用输入,然后使用jQuery触发Enter键,我可以确保下一个输入始终处于焦点状态

感谢@neps朝着正确的方向努力


工作

我还意识到我在html中使用了很多逻辑,这将被更改,因为它只是一个原型。每个输入字段都有以下绑定:
hasFocus:true
。既然您已经在使用jQuery,为什么不找到第一个非禁用字段来设置焦点呢?我将尝试一下,然后返回到you@neps我仍然不能得到我想要的结果,你能举个例子吗?
$(document).ready(function() {
 $('form').find('input[type=text],textarea,select').filter(':input:enabled:visible:first').focus();
});

$(document).keyup(function(e){
 $('form').find('input[type=text],textarea,select').filter(':input:enabled:visible:first').focus();
});

var e = $.Event("keyup", { keyCode: 13}); //"keydown" if that's what you're doing
$("body").trigger(e);