1

我在 MVC3 应用程序中使用了 knockout.js。我对淘汰赛很陌生,所以这个问题可能看起来有点愚蠢。

我希望在页面加载时有一个输入焦点。我已经尝试过的事情是:

<input type="text" class="text-field" data-bind="attr: { autofocus: autofocus }

<input type="text" class="text-field" data-bind="hasFocus: true

但两者都没有帮助。我究竟做错了什么?

只是小更新。这是输入的整体视图。

<input type="text" class="text-field" data-bind="value: RegistrationNumber, valueUpdate: 'blur', enterKey: $root.proceedToServicestPage, hasFocus: true" />

我认为问题可能是由于活页夹调用的顺序,并试图将 hasFocus:true 放在不同的位置(从第一个活页夹到最后一个活页夹)。这也没有帮助

4

2 回答 2

1

您不能使用autofocus属性,因为这是在加载文档时由浏览器完成的,这是您的 JavaScript (Knockout) 有机会运行以设置属性之前完成的。

您的第二个选项应该有效。我可以使用此视图进行复制:

<input type="text" value="Aaaaaaa" data-bind="hasFocus: false" /><br />
<input type="text" value="Be Selected!" data-bind="hasFocus: true" /><br />
<input type="text" value="Cccccc" data-bind="hasFocus: false" />

而这个JS:

ko.applyBindings({});

请参阅此小提琴以进行演示。

于 2013-10-11T12:43:04.433 回答
0

参加聚会很晚,但也许它会帮助某人。正如@jeroen 所说,该属性必须在淘汰赛绑定中设置。事实上autofocus可以在那里设置——这只是语法正确的问题。我能够通过以下任一方法解决它:

data-bind="attr: { autofocus: 'autofocus' }它在结果标记中给出了一个属性autofocus="autofocus"

data-bind="attr: { autofocus: '' }它在结果标记中给出了一个属性 justautofocus

这些中的任何一个都适用于我的 Chrome

于 2017-03-17T22:34:25.700 回答