2015-01-04 38 views
0

我有一個基本的輸入欄淘汰賽值:後處理的Knockout.JS輸入值

<input type="text" data-bind="value: mytext"/> 

不過,我想接收「mytext的」值後進行索姆邏輯視圖模型我。 最初我想到了某種後處理事件ala「valueUpdate」,但基本上我只是想在「enter」和「space」命中後運行一個函數。我是否需要寫一個新的綁定處理程序,或者是否有一個更直接的淘汰賽 - 適當的方式來做到這一點?

基本上我想要做的是jquery/autocomplete/multible和Ryan Niemeyers挖空排序示例http://jsfiddle.net/rniemeyer/vgXNX的組合。

我是在div.item後div.container,取代了「添加任務」,如:

<div class="container"> 
    <div class="item" data-bind="sortable:{template:'tagsTmpl',data:myTags, allowDrop:true"></div> 
    <input data-bind="value: mytext, event: {keypress: handleKey}"/> 
    <!-- Line above replacing this: <a href="#" data-bind="click: $root.addTag">Add Tag</a> -->      
</div> 
+0

從場上失去重心確定爲事件觸發? –

+0

你的問題相當不清楚。它也可能是[XY問題]的一個實例(http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。請更新您的問題,包括更多上下文和代碼(例如,實際視圖模型邏輯,包括您想使用的「某些邏輯」),最好是您的場景的複製。 – Jeroen

+0

@韋恩,我想我可以生活在失去焦點。基本上我想讓輸入/空間創建一個對象的新實例 - 將文本輸入作爲新對象的屬性之一。我想將新實例推送到ko.observableArray上。 –

回答

3

基本上我只是想「進入」後運行的功能OG「空間「被擊中。

您可以使用event綁定。

ko.applyBindings({ 
 
    mytext: ko.observable("initial value"), 
 
    handleKey: function(data, event) { 
 
     if (event.keyCode == 0x20) { 
 
      console.log("Space has been pressed!"); 
 
     } 
 
     return true; 
 
    } 
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> 
 

 
<input type="text" data-bind="value: mytext, event: {keypress: handleKey}" />

+0

事件處理解決了我的問題。感謝名單! :) 我添加了一個函數調用,添加一個標籤到「handleKey」功能,它解決了我的問題。解決方法如下:http://jsfiddle.net/AsleG/qbjytqop/ –

+1

@AsleG提示:如果你想捕捉光標鍵,也可以使用'keyup'而不是'keypress'。 – Tomalak

+0

我喜歡這樣的提示。 :D謝謝,@Tomalek! –