是否可以设置valueUpdate:' afterkeydown'作为Knockout.js中的默认valueUpdate?

时间:2013-05-15 20:31:44

标签: javascript knockout.js knockout-2.0

而不是在每个文本输入中重复此设置?

要说清楚,我正在谈论这个:

<input type="text" name="email"data-bind="value: email, valueUpdate:'afterkeydown'" />

对于90%的输入,我更喜欢上面的'change' - 当前默认值。

4 个答案:

答案 0 :(得分:1)

您无法直接为所有文本输入设置默认功能。你可以做的是创建一个模板输入,然后所有这些只是那些模板,例如

<!-- ko template:{name:'input-template', data: email}--><!--/ko-->

通过使用无容器符号,您可以避免创建额外的html元素

然后只需用你想要的任何东西定义模板:

<script type="text/html" id="input-template">
    <input type="text" name="$data" data-bind="value: $data, valueUpdate:'afterkeydown'"/>
</script>

答案 1 :(得分:1)

您可以替换现有值bindingHandler以添加afterkeydown绑定。

请参阅明智的解决方案How can I get Knockout JS to data-bind on keypress instead of lost-focus?

答案 2 :(得分:0)

如果你可以用类“标记”目标输入,你可以试试这个:

$('.yourClass').attr('data-bind', "value: email, valueUpdate:'afterkeydown'");

我希望它有所帮助

答案 3 :(得分:0)

由于Knockout中没有选项可以更改valueUpdate默认的工作方式,因此您唯一的选择就是更改Knockout库源以使其按您希望的方式工作。如果库已更新,则必须再次进行此更改,或者您可以要求Knockout的开发人员添加可以更改默认valueUpdate事件的配置选项。