2014-03-06 16 views
-1

我想有一個input元素調用一個函數,當我按ENTER,使用元素中的價值函數調用:綁定輸入進入淘汰賽使用

<input id="searchQuery" placeholder="Search..." type="text" data-bind="value: searchQuery, valueUpdate: 'onkeydown', event: { keydown: searchQueryEntered }"/> 

功能:

searchQueryEntered = function (value, event) { 
    if (event.keyCode == 13) 
     ...do some stuff... 
}, 

我的功能確實被調用,但searchQuery永遠不會更新!我什至不能輸入任何東西到input。不知怎的,它會被拋出。我想要做的事似乎對我來說很簡單,但我一直沒有把它做好。

+0

試着撥弄在valueUpdate綁定中使用'afterkeydown'而不是'onkeydown'。 –

+0

[Convert Javascript onkeypress to knockoutjs to enter on enter]可能的重複(http://stackoverflow.com/questions/18662710/convert-javascript-onkeypress-to-knockoutjs-to-call-on-enter) –

回答

-1

要解決你輸入你需要從你的keydown的處理程序返回true:

searchQueryEntered = function (value, event) { 
     if (event.keyCode == 13) { 
      ...do some stuff... 
     } 
     return true; 
    } 

那麼你應該使用valueUpdate:「afterkeydown」讓每個的keydown後模型進行更新。

看看這個工作示例:http://jsfiddle.net/tabalinas/h4u8E/

-1

註冊一個bindinghandler的回車鍵

ko.bindingHandlers.onEnterKey = { 
    init: function(element, valueAccessor, allBindings, vm) { 
     ko.utils.registerEventHandler(element, "keyup", function(event) { 
      if (event.keyCode === 13) { 
       ko.utils.triggerEvent(element, "change"); 
       valueAccessor().call(vm, vm); 
      } 

      return true; 
     }); 
    }   
}; 

,那麼你可以綁定如下onEnterKey: searchQueryEntered

見下文 http://jsfiddle.net/NccZ8/2/