2012-03-19 9 views
5

मैं jQuery के साथ knockout.js साथ के बारे में खेल रहा है, और मैं बहुतनॉकआउट घटना अंदर jQuery के साथ तत्व प्राप्त कर रहा है

मेरे कोड उदाहरण और कोड knockout.js के लिए नया हूँ यहाँ है: http://jsfiddle.net/Ninjanoel/ADYN6/

असल में, मैं अपने ज्ञान के परीक्षण के रूप में लॉटरी नंबर इनपुट स्क्रीन बनाने की कोशिश कर रहा हूं, और अब मैं टेक्स्टबॉक्स के इनपुट को प्रमाणित करने की कोशिश कर रहा हूं, और फिर इनपुट बॉक्स पर विशेष प्रभाव लागू करता हूं यदि [onBlur], टेक्स्ट बॉक्स मान्य नहीं है।

मेरे पास 'लोटरीएप' है, जिसमें 'लाइन्स' की एक अवलोकन योग्य सरणी है, जिसमें मेरे इनपुट या 'नंबर बॉक्स' के रूप में कार्य करने के लिए [5] को वेरिएबल्स की सामान्य सरणी है। मैं 'बॉक्स' को प्रस्तुत करने के लिए प्रत्येक 'लाइन' और उसके अंदर एक और टेम्पलेट प्रदर्शित करने के लिए एक टेम्पलेट का उपयोग कर रहा हूं।

यदि इनपुट सही नहीं है तो टेक्स्टबॉक्स पर शायद मुझे एक jquery 'color fade' प्लगइन [लाल से बीजी रंग] को कॉल करना है। लेकिन 'onBlur' समारोह में मैं बना लिया है, मैं नहीं कर सकते मुझे myTextBox = jQuery(arguments.something) की तरह कुछ फोन मदद करने के लिए तर्क समारोह के लिए पारित में से किसी में कुछ भी मिल जाए, ताकि मैं की तरह jQuery(myTextBox).colourFade()

<input type="text" data-bind="value:n, event:{blur: $parent.onBlur }, uniqueName:true, disable: $parent.isLD" class="lotteryNumber" maxlength="2"/> 

कुछ कर सकते हैं है ऑनब्लूर को संभालने वाले मेरे आंतरिक टेम्पलेट में कोड।

self.onBlur = function()... 

वह कार्य है जिसे मैं 'ब्लर' ईवेंट पर कॉल करना चाहता हूं।

मुझे पता है कि अगर मैं कस्टम बाइंडिंग का उपयोग करता हूं उदा। ko.bindingHandlers.myBinding फिर 'तत्व' सीधे 'अपडेट' और 'init' कॉल पर पारित किया जाता है, जिसे मैं jQuery (तत्व) .colourFade() पर कॉल करने के लिए उपयोग कर सकता हूं, लेकिन तत्व को कैसे पहुंचाया जा सकता है यह समझने में एक अभ्यास है मानक घटना बाइंडिंग का उपयोग करके, क्योंकि मैं कल्पना कर सकता हूं कि मुझे अक्सर इसकी आवश्यकता होगी और एक कस्टम बाइंडिंग में सब कुछ करने की इच्छा नहीं है, और साथ ही, एक कस्टम बाध्यकारी (मेरे ज्ञान के लिए) केवल 'init' और 'अपडेट' विकल्प के साथ) , मुझे नहीं लगता कि वे पर्याप्त होंगे (उदाहरण के लिए 'कीप' पर क्या?), और वैसे भी, कस्टम बाइंडिंग एक घटना के बजाए ko.observable पर आधारित प्रतीत होती है।

सारांश:

जब data-bind="event : {blur : myMethod}" का उपयोग कर, मैं कैसे करना है, myModel.myMethod के अंदर, एचटीएमएल तत्व यह है कि घटना को बनाया हड़पने।

उत्तर

8

jQuery event वस्तु ईवेंट हैंडलर में दूसरा तर्क है, इसलिए:

self.onBlur = function(data, event) { 
    console.log(event.target); 
} 
+0

मीठा, धन्यवाद दोस्त! "चेतावनी (jQuery (event.target) .val());" पाठ बॉक्स मान देता है, जैसा कि मुझे भी इसकी आवश्यकता है! मुझे यकीन है कि मैंने पहले ईवेंट की कोशिश की थी। ओह ठीक है, संक्षेप में जवाब के लिए धन्यवाद! – Nnoel

+0

नोट event.target IE में काम नहीं करता है। आपको IE के लिए event.srcElement का उपयोग करने की आवश्यकता है .. इसलिए, आपको सभी ब्राउज़रों को संभालने के लिए इस तरह कुछ उपयोग करना चाहिए: var target = event.target || event.srcElement – portlandrock

+0

@portlandrock: मैंने अपनी पोस्ट को यह इंगित करने के लिए संपादित किया है कि यह jQuery ईवेंट ऑब्जेक्ट का उपयोग कर रहा है, न कि ब्राउज़र से सीधे। यदि jQuery पृष्ठ पर है, तो नॉकआउट jQuery ईवेंट हैंडलर का उपयोग करेगा, जो [event.target] (http://api.jquery.com/event.target/) प्रॉपर्टी को सामान्य करता है ताकि आप इसे किसी भी ब्राउज़र में उपयोग कर सकें जो jQuery का समर्थन करता है। – Douglas

संबंधित मुद्दे