तरीके बात की इस तरह करने के लिए की एक संख्या हैं। यहां हम बाइंडिंग और पर्यवेक्षकों का उपयोग करके इसे पूरा कर सकते हैं।
सबसे पहले एक ऐसा फ़ंक्शन बनाएं जो हमेशा एक नंबर लौटाए।
var onlyNumber = function(input) {
return input.toString().replace(/[^\d.]/g, "");
};
का उपयोग करना है कि हमें निम्न
App = Ember.Application.create();
App.person = Ember.Object.create({
age: 42
});
App.NumberField = Ember.TextField.extend({
valueBinding: Ember.Binding.from("App.person.age").transform(onlyNumber),
_cleanValue: function() {
this.set('value', onlyNumber(this.get('value')));
}.observes('value')
});
1) हम व्यक्ति की उम्र के लिए एक बाध्यकारी बना रहे हैं कर सकते हैं, लेकिन कुछ भी है कि इस बंधन से होकर गुजरता है केवल एक नंबर हो सकता है। अधिक जानकारी के लिए Ember.Binding परिवर्तन/से देखें।
2) हम टेक्स्ट फ़ील्ड के मान को देख रहे हैं और इसे बदलने पर केवल एक संख्या होने के लिए सेट कर रहे हैं। यदि उपयोगकर्ता '42 ए' में प्रवेश करता है तो हम उसे तुरंत '42' पर सेट कर देंगे। ध्यान दें कि भले ही '42 ए' टेक्स्ट इनपुट में एक संक्षिप्त सेकेंड के लिए था, फिर भी यह हमारे ट्रांसफॉर्म के कारण बाध्यकारी से गुजरने में सक्षम नहीं होता।
यहां इस उदाहरण दिखा एक बेला है: http://jsfiddle.net/nDBgC/
आप पुराने ब्राउज़र के लिए देखभाल न, तो आप एचटीएमएल 5 इनपुट प्रकार "संख्या" का लाभ उठाने के रूप में अच्छी तरह से की तरह लग सकता है,।टेक्स्टफ़िल्फ़ प्रकार = "संख्या" मान बाइंडिंग = "कुछ बाइंडिंग"}} – Rajat
@राजत तो पुराने ब्राउज़र के साथ क्या होगा? टूटी हुई कार्यक्षमता या बस कोई सत्यापन नहीं? और 'पुराना' माना जाता है? (क्षमा करें, मैं इस क्षेत्र में एक नोब हूं) –
वे बस एक नियमित टेक्स्टफील्ड में फॉलबैक करेंगे। ब्राउज़र समर्थन पर quirksmode जांचें: http://www.quirksmode.org/html5/inputs.html – Rajat