2016-11-18 4 views
0

を入力したときに、私は、ユーザーのプレスがノックアウト を使用して入力すると、検索機能を有効にしようとしていますが、私はテキストボックスに入力して押したときに、ノックアウトがtextboxノックアウトキープレスは、プレスが

<!DOCTYPE html> 
<html> 
<head> 
    <title>Knockout</title> 
    <meta charset="utf-8" /> 
</head> 
<body> 
    <div id="view"> 
     <input type="text" placeholder="Press enter to bind" data-bind="value:textboxValue" data-function="pressEnterToBind"/> 
    </div> 
</body> 
</html> 
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> 
<script src="http://knockoutjs.com/downloads/knockout-3.4.1.js"></script> 
<script> 
    $(document).ready(function() { 
     window.vm = (function ($, ko) { 
      var $view = $("#view"); 
      var textboxValue = ko.observable(); 

      var onPressEnter = function (e) { 
       if (e.which === 13) { 
        alert(textboxValue()); 
       } 
      }, 
      init = function() { 
       $view.on('keypress', '[data-function="pressEnterToBind"]', onPressEnter); 
      }; 

      init(); 

      return { 
       textboxValue: textboxValue 
      }; 
     }($, ko)); 

     window.vm.binding = (function (ko, vm) { 
      ko.applyBindings(vm); 
     })(ko, window.vm); 
    }); 
</script> 

結果から値を結合しない結合しませんアラートが

+0

keypressの代わりに、keydownで作業しましたか?それで、入力、バックスペース、タブなどの印刷不可能なキーを捕まえる方法です。 – Bindrid

+0

はい、結果は同じです –

+0

あなたのコードは、必要以上に複雑だと思います。たとえば、ビューを作成した直後にコントロールをバインドしていないのはなぜですか?ちなみに、textInputはvalueよりもテキストボックスをバインドするのに適しています。または、本当にキーストロークをキャプチャしたい場合は、独自のバインドを作成します。 – Bindrid

答えて

0

「未定義」されるために、私は、2つの方法

で私の目標に到達し

ファースト:追加「valueUpdate: 『afterkeydown』」結合ノックアウトする

<input type="text" placeholder="Press enter to bind" data-bind="value:textboxValue,valueUpdate: 'afterkeydown'" data-function="pressEnterToBind"/> 

OR

第二

:もう一度問題を解決することができ、標的結合制御

  var onPressEnter = function (e) { 
       if (e.which === 13) { 
        $(e.target).blur(); // to refresh ko binding 
        alert(textboxValue()); 
        $(e.target).focus(); // to refresh ko binding 
       } 
      }, 
0

にtextInputの "ぼかし()" と "フォーカス()"。

KnockoutJSドキュメント:結合値とは異なり

、にtextInputはオートコンプリート、ドラッグアンドドロップ、クリップボードイベントを含むユーザ入力のすべてのタイプのためにDOMから即時アップデートを提供します。

関連する問題