使用敲除js进行自动对焦不起作用

时间:2013-10-11 12:33:36

标签: javascript asp.net-mvc knockout.js

我在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置于不同的位置(从第一个绑定到最后一个绑定器)。这也没有帮助

2 个答案:

答案 0 :(得分: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({});

请参阅this fiddle了解演示。

答案 1 :(得分:0)

来晚会很晚,但也许会帮助别人。正如@jeroen所说,必须在敲除绑定中设置属性。实际上autofocus可以设置在那里 - 它只是一个正确语法的问题。我能用以下任何一种方法解决它:

data-bind="attr: { autofocus: 'autofocus' }autofocus="autofocus"

的结果标记中提供了一个属性

data-bind="attr: { autofocus: '' }在结果标记中仅提供autofocus

的属性

其中任何一个都可以在Chrome中使用