आप के लिए मूल्य काटना चाहते हैं एक संख्यात्मक i Nput आप इस्तेमाल कर सकते हैं और एक्सटेंडर कि निम्नलिखित की तरह मूल्य काटना होगा:
ko.bindingHandlers.maxLength = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
'use strict';
var maxlength = element.getAttribute("maxlength");
valueAccessor().extend({truncateValue: maxlength })
ko.bindingHandlers.value.init(element, valueAccessor, allBindingsAccessor, viewModel);
}
};
अपने html आप लागू पर:
ko.extenders.truncateValue = function(target, option) {
target.subscribe(function (newValue) {
if(newValue.length > option){
target(newValue.substring(0,option));
}
});
return target;
};
और फिर नमूदार को एक्सटेंडर जोड़ देंगे, एक कस्टम बाध्यकारी कि इच्छा बनाने
<input type="number" data-bind="maxLength: yourObservable" maxlength="9"></input>
स्रोत
2015-11-13 14:24:26
मुझे यह समाधान पसंद आया; मैं सिर्फ मूल मूल्य का तेज़ पूर्वावलोकन प्रदान करने के लिए तत्व के शीर्षक में असीमित पाठ डालने का सुझाव देना चाहता हूं; कुछ "element.title = untrimmedText;" अगर untrimmedText लंबाई अधिकतम लंबाई से अधिक है। – CaNNaDaRk
बस एक छोटी टिप्पणी - यह जांचना अच्छा होगा कि अनछुए पाठ की लंबाई (trimTextLenth + 3) से अधिक है, क्योंकि यदि trimTextLenth 5 बराबर है, लेकिन पाठ "123456" है, तो परिणाम "12345 ..." होगा, जो असीमित संस्करण से लंबा है। –
मैंने यूसुफ के जवाब और इस पहेली में इवान की टिप्पणी का उपयोग किया है: http: //jsfiddle.net/8ypdX/90/। यह truncateText नामक एक चर बनाता है जो आपको छंटनी के लिए उपयोग किए गए पाठ को परिभाषित करने की अनुमति देता है, और उस चर की लंबाई को मापता है। यदि छंटनी पाठ प्लस कटाव टेक्स्ट मूल स्ट्रिंग से अधिक है तो यह ट्रिम निष्पादित नहीं करता है। – RussAwesome