मेरे पास बहुत सारे और पाठ के साथ एक टेक्स्टरेया है:
& lt; textarea cols = "50" पंक्तियों = "10" id = "txt" & gt; बहुत सारे और बहुत सारे पाठ यहां जाता है & lt; / textarea & gt; मैं टेक्स्टरेअ नीचे स्क्रॉल करना चाहता हूं, ताकि उपयोगकर्ता 2000-वें वर्ण को देख सके। मैं इसे javasctipt / jQuery का उपयोग कैसे कर सकता / सकती हूं?
$ ('# txt')। ScrollToCharNo (2000); // कुछ ऐसा अच्छा होगा संपादित करें (मेरा समाधान)
अच्छा, मैंने इसे अपने आप में काम करने में कामयाब रहा एकमात्र रास्ता मुझे मिला, एक ही फ़ॉन्ट और चौड़ाई के साथ एक texturea के साथ एक div बनाने के लिए है, आवश्यक चरित्र के पास एक स्पैन डाल दिया और उस अवधि की स्थिति का पता लगाएं।
मुझे यकीन है, कि कोई मेरे समाधान का उपयोग उपयोगी है, इसलिए मैं इसे यहां पेस्ट करूँगा:
jQuery.fn.scrollToText = function (search) {// हो रही पाठ सामग्री contents var text = $ (this) .text ); // वर्णक की संख्या हम var charNo = text.indexOf (खोज) को दिखाना चाहते हैं; // यह स्पैन निर्धारित वर्णक स्थिति निर्धारित करने की अनुमति देगा var anch = '& lt; span id = "anch" & gt; & lt; / span & gt;'; // पाठ पाठ = पाठ.substring (0, charNo) + anch + text.substring (charNo) में वर्ण के बाद इसे डालने; // एक डीआईवी बना रहा है जो कि टेक्स्टरेआ वर् कॉपी डीआईवी = $ ('& lt; div & gt; & lt; / div & gt;') की एक सटीक प्रति है। एपेंड (text.replace (/ \ n / g, '& lt; br / & gt;' )) / / बनाने newlines एक ही देखो। सीएसएस ('चौड़ाई', $ (यह) .attr ('clientWidth')) / चौड़ाई स्क्रॉलबार के बिना। सीएसएस ('फ़ॉन्ट आकार', $ (यह)। सीएसएस (' फ़ॉन्ट-आकार '))। सीएसएस (' फ़ॉन्ट-परिवार ', $ (यह)। सीएसएस (' फ़ॉन्ट-परिवार '))। सीएसएस (' पैडिंग ', $ (यह)। सीएसएस (' पैडिंग ')); // textarea के बाद नया div सम्मिलित करना - इस के लिए आवश्यक है। विधान () अदृश्य तत्वों पर काम नहीं करते copyDiv.insertAfter ($ (यह)); // पेरेंट डीआईवी के संबंध में SPAN पर स्थिति क्या है? Var pos = copyDiv.find ('SPAN # anch') ऑफसेट ()। Top - copyDiv.find ('SPAN # anch')। निकटतम ('DIV')। ऑफसेट ()। शीर्ष; // हम जिस पाठ में दिलचस्पी रखते हैं, टेक्सटेरेआ के बीच में होना चाहिए जब स्क्रॉलिंग किया जाता है pos = pos - Math.round ($ (this) .attr ('clientHeight') / 2); // अब, हमें पता है कि स्क्रॉल कहां है! $ (This) .scrollTop (पीओएस); // डीआईवी के लिए कोई ज़रूरत नहीं copyDiv.remove (); }; $ (फ़ंक्शन () {$ ('# scroll_button')। $ ('# Txt') पर लिखित फ़ंक्शन का उपयोग करके "मुझे ढूंढें" पर क्लिक करें (फ़ंक्शन () {// स्क्रॉल करेंटेक्स्ट ('FIND ME'); वापस लौटाएं ;});}); ये एक डेमो है (यह काम करता है!):
चूंकि समस्या में से कोई भी वास्तव में समस्या हल नहीं हुई है, इसलिए मैं experimentX का एक स्वीकार करूँगा: मेरी मदद करने का प्रयास, मैं इसकी सराहना करता हूं!
मुझे यकीन नहीं है कि यह काम करेगा। कृपया इसे भी जांचें यह 2000, 1500 वें और 1000 वां स्थान के लिए काम कर रहा है।
संपादित करें उलझन में फ़ॉन्ट-आकार या रेखा-ऊंचाई ??? $ ( फ़ंक्शन () {var height = 2000 / $ ('# txt')। एट्रि ('कर्नल'); $ ('# टीसीटीटी')। स्क्रोलटॉप (ऊंचाई * 13); $ ('# txt')। चयन श्रेणी (2000 , 2000); // यह सिर्फ जांचना है}}; $ .fn.selectRange = function (प्रारंभ, अंत) {// यह सिर्फ इस वापसी को चेक करने के लिए है। ईख (फ़ंक्शन () (यदि (this.setSelectionRange) {this.focus (); this.setSelectionRange (प्रारंभ, अंत) ;} और यदि (this.createTextRange) {var range = this.createTextRange (); श्रेणी। कोलेप्स (सच्चा); रेंज.मोवएंड ('कैरेक्टर', एंड); रेंज.मोवस्टार्ट ('कैरेक्टर', आरम्भ); श्रेणी। चुनते हैं(); } }); }; UPDATE इस बारे में कैसे var height = 1200 / $ ('# txt')। Attr ('cols '); Var line_ht = $ ('# txt')। सीएसएस ('रेखा-ऊंचाई'); Line_ht = line_ht.replace ('px', ''); ऊंचाई = ऊंचाई * line_ht;
Comments
Post a Comment