【问题标题】:Knockout JS valueUpdate keypress not working for enable bindingKnockout JS valueUpdate 按键不适用于启用绑定
【发布时间】:2016-07-28 20:22:55
【问题描述】:

我的表单上有一个“保存”按钮,该按钮启用了剔除绑定。我将 valueUpdate: 'keypress' 添加到我的淘汰赛绑定表达式中,希望在按键时启用保存按钮。我有一个带有值敲除绑定的简单输入文本框。相反,页面仍然需要用户单击以启用保存按钮。下面的 HTML。当用户输入输入时,canSave 变为 true 启用保存按钮。

<button data-bind="click: save, enable: canSave, valueUpdate: 'keypress'">Save</button>

<h3><strong>First Name: <input data-bind="value: firstName"></strong></h3>

【问题讨论】:

    标签: javascript jquery html knockout.js


    【解决方案1】:

    valueUpdate 绑定只有与value 绑定一起使用才有意义;它应该继续你的输入,而不是你的按钮。

    <button data-bind="click: save, enable: canSave">Save</button>
    <h3><strong>First Name: <input data-bind="value: firstName, valueUpdate: 'keypress'"></strong></h3>
    

    另外,如果您使用足够新的浏览器来支持它,请考虑valueUpdate: 'input',如果您使用的是 KO >3.2,甚至可以考虑 textInput binding

    【讨论】:

    • 这有效,但保存按钮似乎在至少有两次按键后才启用。例如,如果我单击名字并按 1 键,则保存按钮仍处于禁用状态。如果我按下第二个键,那么保存按钮就会启用。
    • nvm , keypress 事件似乎需要两次按键但 valueUpdate: 'input' 似乎只需一次按键即可正常工作 =) 谢谢!
    • 您看到这种行为的原因是“keypress”在按下键时使用输入的内容更新了 observable...这不包括他们所用的键输入。
    • 如果您有机会并且认为这是一个好问题,请投票支持我的问题。 =)
    【解决方案2】:

    试试这个:

    <button data-bind="click: save, enable: firstName().length > 0">Save</button>
    
    <h3><strong>First Name: <input data-bind="value: firstName, valueUpdate:'keypress'"></strong></h3>
    

    从你的代码看来,firstName 是一个可观察的,如果是这样,那么上面的代码将满足你的需要。如果没有输入,它将禁用按钮,否则将其启用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      • 2018-10-19
      • 1970-01-01
      • 2019-01-23
      • 2014-04-05
      相关资源
      最近更新 更多