चूंकि मुझे वास्तव में इस समाधान की आवश्यकता थी, और विशिष्ट बेसलाइन समाधान ( इनपुट पर ध्यान दें - फिर मूल्य को स्वयं के बराबर सेट करें ) क्रॉस-ब्राउज़र काम नहीं करता है , मैंने इसे काम करने के लिए कुछ समय ट्विक करने और सब कुछ संपादित करने में बिताया। @ Kd7 पर निर्माण के कोड का रहा हूँ।
का आनंद लें! IE6 +, फ़ायरफ़ॉक्स, क्रोम, सफारी, ओपेरा में काम करता है
क्रॉस-ब्राउज़र कैरेट पोजिशनिंग तकनीक (उदाहरण: कर्सर को END में ले जाना)
// ** USEAGE ** (returns a boolean true/false if it worked or not)
// Parameters ( Id_of_element, caretPosition_you_want)
setCaretPosition('IDHERE', 10); // example
मांस और आलू मूल रूप से @ kd7 का सेटपर्सपोज़िशन है, जिसमें सबसे बड़ा ट्विस्ट है, if (el.selectionStart || el.selectionStart === 0)
फ़ायरफ़ॉक्स में सेलेक्शनस्टार्ट 0 से शुरू हो रहा है। , जो कि निश्चित रूप से बूलियन फाल्स में बदल रहा है, इसलिए यह वहां टूट रहा था।
क्रोम में सबसे बड़ा मुद्दा यह था कि बस देने के लिए यह .focus()
पर्याप्त नहीं था (यह पाठ के सभी का चयन करता रहा!) इसलिए, हम el.value = el.value;
अपने फ़ंक्शन को कॉल करने से पहले खुद के लिए खुद का मूल्य निर्धारित करते हैं, और अब इसकी एक समझ और स्थिति है इनपुट का उपयोग करने selectionstart ।
function setCaretPosition(elemId, caretPos) {
var el = document.getElementById(elemId);
el.value = el.value;
// ^ this is used to not only get "focus", but
// to make sure we don't have it everything -selected-
// (it causes an issue in chrome, and having it doesn't hurt any other browser)
if (el !== null) {
if (el.createTextRange) {
var range = el.createTextRange();
range.move('character', caretPos);
range.select();
return true;
}
else {
// (el.selectionStart === 0 added for Firefox bug)
if (el.selectionStart || el.selectionStart === 0) {
el.focus();
el.setSelectionRange(caretPos, caretPos);
return true;
}
else { // fail city, fortunately this never happens (as far as I've tested) :)
el.focus();
return false;
}
}
}
}
if(elem.selectionStart)
जब ब्रेकस्टार्ट का चयन 0 होता है, तब भी झाँस के उत्तर द्वारा बताया जाता है।