2013-04-20 4 views
6

लंबी कहानी छोटी है, मैं उपयोगकर्ताओं को एक इनपुट तत्व पर प्रवेश करने और मेरे व्यूमोडेल में कुछ विधि कहने के लिए सक्षम करना चाहता हूं। यहाँ मेरी एचटीएमएल इनपुट है:इनपुट कीप्रेस के लिए नॉकआउट ईवेंट बाध्यकारी अजीब व्यवहार

<input id="searchBox" class="input-xxlarge" type="text" data-bind="value: searchText, valueUpdate: 'afterkeydown', event: { keypress: $parent.searchKeyboardCmd}"> 

और यहाँ वीएम में मेरी विधि है:

searchKeyboardCmd = function (data, event) { if (event.keyCode == 13) searchCmd(); }; 

सब कुछ ठीक काम करता है और searchCmd कहा जाता है जब मैं इनपुट पर दर्ज मारा, लेकिन समस्या यह है कि मैं टाइप कर सकते हैं है इनपुट में कुछ भी नहीं, यानी जो कुछ भी मैं इनपुट में टाइप करता हूं उसे अनदेखा किया जाता है। आपकी मदद के लिए अग्रिम धन्यवाद।

उत्तर

20

केओ डॉक्स के अनुसार आपको अपने ईवेंट हैंडलर से true वापस करना होगा यदि आप डिफ़ॉल्ट कार्रवाई आगे बढ़ाना चाहते हैं।

searchKeyboardCmd = function (data, event) { 
    if (event.keyCode == 13) searchCmd(); 
    return true; 
}; 
+0

ठीक है, आपको बहुत बहुत f_martinez धन्यवाद! यह अब पूरी तरह से काम करता है, हालांकि मुझे नहीं पता कि यह क्यों जरूरी था! – Pejman

1

here's एक बेला जो यह दर्शाता है कि क्या उर करते हैं और यह भी KeyUp साथ उर कोड में घटना 'कुंजी दबाने' की जगह ले और केवल समारोह नाम के साथ $ माता पिता हटा देंगे जब तक पाठ फ़ील्ड एक नॉकआउट foreach loop..here अंदर है की कोशिश कर रहा नीचे संशोधित कोड

<input id="searchBox" class="input-xxlarge" type="text" data-bind="value: searchText, valueUpdate: 'afterkeydown', event: { keyup: searchKeyboardCmd}" 
+0

यह वह उत्तर था जिसने मेरी मदद की, क्योंकि यह एंटर या कीकोड == 13 पर निर्भर नहीं है – Sanchitos

2

यहां एक कामकाजी नमूना है।

http://jsfiddle.net/tlarson/qG6yv/

<!-- ko with: stuff --> 
    <input id="searchBox" class="input-xxlarge" type="text" 
    data-bind="value: searchText, valueUpdate: 'afterkeydown', 
    event: { keypress: $parent.searchKeyboardCmd}"> 
<!-- /ko --> 

और जावास्क्रिप्ट:

var stuffvm = function(){ 
    var self = this; 

    self.searchText = ko.observable(); 
}; 

var vm = function() { 
    var self = this; 

    self.stuff = new stuffvm(); 

    self.searchCmd = function() { 
     console.log("search triggered"); 
    }; 

    self.searchKeyboardCmd = function (data, event) { 
     if (event.keyCode == 13) { 
      self.searchCmd(); 
     } 
     return true; 
    } 
} 

ko.applyBindings(new vm()); 
संबंधित मुद्दे