2012-04-15 13 views
9

[fiddle उदाहरण के लिए देखें]valueUpdate: Knockoutjs में इनपुट प्रकार के लिए 'afterkeydown' = "सांख्यिक" 2.0

मैं प्रकार संख्या के एक input के लिए एक मूल्य बाँध स्थापना की, और चाहते बाध्य observable तुरंत बदलाव को प्रतिबिंबित करने के लिए क्षेत्र के मूल्य के लिए। ऐसा करने के लिए मैंने afterkeydown वैल्यू अपडेट बाध्यकारी सेट किया है। यह तीर ऊपर और तीर नीचे कुंजी का उपयोग कर संख्या इनपुट बदलने के लिए अच्छी तरह से काम करता है। हालांकि, अगर मैं ब्राउजर से उत्पन्न (क्रोम में परीक्षण) वृद्धि/कमी नियंत्रण का उपयोग कर संख्या बदलता हूं तो परिवर्तन केवल एक अलग तत्व पर फोकस बदलने पर दिखाई देता है। मुझे लगता है कि यह परिवर्तन घटना पर डिफ़ॉल्ट अद्यतन को दर्शाता है।

मेरा सवाल यह है कि ऊपर की कुंजीपटल त्रुटियों और ब्राउज़र से उत्पन्न अप/डाउन त्रुटि नियंत्रण का उपयोग करके दोनों परिवर्तनों के लिए अद्यतन सेट करने का कोई तरीका है या नहीं?

उत्तर

18

valueUpdate अतिरिक्त बाध्यकारी घटनाओं की एक श्रृंखला ले सकता है। ऐसा लगता है कि ऊपर/नीचे तीरों पर क्लिक करते समय oninput ईवेंट निकाल दिया गया है।

तो, आप इसे पसंद बाध्य कर सकते हैं:

<input type="number" data-bind="value: y, valueUpdate: ['afterkeydown', 'input']"/>

http://jsfiddle.net/rniemeyer/hY5T2/9/

+0

बहुत बढ़िया है, यह एक आकर्षण की तरह काम करता है। धन्यवाद! – odedbd

+0

मेरे एमवीवीएम डॉटनेटनेट मॉड्यूल में इसका उपयोग करके मुझे छोटे (!) स्पिनर-अप और स्पिनर-डाउन बटन मिलते हैं। वे इतने छोटे हैं कि उनका उपयोग करना लगभग असंभव है। मैं फिर से एक सीएसएस चीज है, लेकिन इसे समझने में सक्षम नहीं है। यदि मैं <इनपुट प्रकार = "संख्या" डेटा-बाइंड = "मान: y, valueUpdate: ..."> के बजाय <इनपुट डेटा-बाइंड = "स्पिनर के साथ जाएं: y, valueUpdate: ..."> हर चीज़ अच्छी लगती है, लेकिन valueUpdate काम नहीं करता है ... चीजें जो आपको हम्म बनाती हैं ... –

+0

सेलेनियम परीक्षण स्क्रिप्ट्स के साथ कोई समस्या अवलोकन करने वाले अपडेट नहीं कर रही थी, और इससे मेरे लिए यह हल हो गया। – AaronLS