2013-05-07 5 views
9

के साथ आईई 9 और 10 के स्पष्ट बटन को संभाल लें मेरे पास knockout js पर एक इनपुट टेक्स्ट बॉक्स है।नॉकआउट बाध्यकारी

<input id="searchTextBox" class="searchTextBox" type="text" maxlength="25" 
     title="Search" placeholder="Search" 
     data-bind="value: GridVm.FilterText, 
     valueUpdate: 'afterkeydown', 
     disable: GridVm.Data().length == 0" /> 

समस्या यह है कि जब उपयोगकर्ता IE में x पर क्लिक करता है तो फ़िल्टरटेक्स्ट देखने योग्य नहीं होता है।

मुझे पता चला है कि मैं remove the x (लिंक किए गए प्रश्न में स्क्रीन शॉट देख सकता हूं), लेकिन यह एक अंतिम उपाय है (मुझे सुविधा पसंद है)। This forum says there is no event fired when the x is clicked

क्या कोई ऐसी घटना है जिसका उपयोग मैं नॉकआउट अवलोकन योग्य अद्यतन या नॉकआउट में ऐसा करने का एक अच्छा तरीका करने के लिए कर सकता हूं?

+0

क्लिक बाध्यकारी – CodeThug

उत्तर

11

तुम सिर्फ बदलते हैं तो

valueUpdate: 'afterkeydown' 

valueUpdate: 'input' 

के लिए यह है कि घटना मूल्य अपडेट लागू करने के हुक। यह समग्र रूप से बेहतर है क्योंकि यह क्लिपबोर्ड-आधारित क्रियाओं और टेक्स्ट ड्रैग-ड्रॉप क्रियाओं को भी संभालता है।

+0

पर नज़र डालें! यह भी मेरे लिए काम किया। मैं जवाब के रूप में आपका जवाब बदल रहा हूं और अपना फीड अपडेट कर रहा हूं। – Aligned

+0

हाँ सही समाधान। –

+0

मैंने पाया कि डेटा से बाइंड को मूल्य से टेक्स्ट में बदलना इनपुट ने इस मुद्दे को अच्छी तरह से हल किया। प्रत्येक कुंजी के बाद इसे अपडेट करना बंद करने के लिए मैंने इसे अवलोकन योग्य सीमित कर दिया: विवरण के लिए http://knockoutjs.com/documentation/rateLimit-observable.html। –

4

मैंने इसे input event और Knockout's event binding का उपयोग करके निकाला। नीचे दिए गए कोड के साथ my JsFiddle showing the solution है।

<input type="search" id="input1" data-bind="value: textForBox, valueUpdate: 'afterkeydown', 
    event: { input: cleared }" /> 
var vm = { 
    textForBox: ko.observable(), 
    cleared: function (data, event) { 
     if (event.currentTarget.value === '') { 
      this.textForBox(''); 
     } 
    } 
}; 
ko.applyBindings(vm); 
संबंधित मुद्दे