के साथ कर्सर स्थिति को संरक्षित करना निम्नलिखित स्निपेट करता है जो मैं input
चाहता हूं, यानी, यह सभी गैर-अल्फान्यूमेरिकल वर्णों को हटा देता है, अपरकेस में परिवर्तित होता है, और कर्सर की स्थिति को संरक्षित करता है।angularjs
element = $(element);
element.keyup(function() {
var x = element.val();
var y = x && x.toUpperCase().replace(/[^A-Z\d]/g, '');
if (x===y) return;
var start = this.selectionStart;
var end = this.selectionEnd + y.length - x.length;
element.val(y);
this.setSelectionRange(start, end);
});
मैं एक निर्देश के link
में इस स्निपेट रखा जाता है और यह काम करता है .... ज्यादातर।
समस्या यह है कि angular
मॉडल से पहले मान को लागू करता है। मैंने Google को $apply
या $digest
या यहां जो भी कुछ भी उपयोग करने के लिए Google की कोशिश की, लेकिन कुछ भी काम नहीं किया।
(वास्तव में, मैं किसी भी तरह यह कामयाब रहे, लेकिन फिर सामग्री को फिर से गाया गया था और मैं स्थिति को खो दिया। मैं इसे पुन: पेश नहीं कर सकते हैं, लेकिन यह वैसे भी, काफी अच्छा नहीं था।)
महान समाधान, धन्यवाद! कैरेट की स्थिति निर्धारित करने के अन्य सभी तरीकों से कैरेट आगे बढ़ रहा है, और आपका समाधान केवल – trushkevich
@ मिचल-चेरेम्ज़ा काम करता है, अलग-अलग मॉडल को बनाए रखना संभव है और देखें वैल्यू। उदाहरण के लिए, मैं फ्लाई पर XXX-XXX-XXXX जैसे इनपुट प्रारूपित करना चाहता हूं लेकिन मॉडल में केवल XXXXXXXXXX होना चाहिए। – dearvivekkumar