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