एक पूरा मामला सरल समाधान
अपडेट किया गया 2020-05-14
(मोबाइल और टैबलेट के लिए बेहतर ब्राउज़र समर्थन)
निम्नलिखित कोड काम करेगा:
- प्रमुख इनपुट पर
- पेस्ट किए गए टेक्स्ट के साथ (राइट क्लिक और ctrl + v)।
- कट टेक्स्ट (राइट क्लिक और ctrl + x) के साथ।
- प्री-लोडेड टेक्स्ट के साथ।
- सभी textarea के साथ (बहुस्तरीय टेक्स्टबॉक्स की) साइट विस्तृत है।
- साथ फ़ायरफ़ॉक्स (v31-67 परीक्षण किया)।
- क्रोम के साथ (v37-74 परीक्षण किया गया)।
- साथ आईई (v9-v11 परीक्षण किया)।
- साथ एज (v14-v18 परीक्षण किया)।
- IOS सफारी के साथ ।
- Android ब्राउज़र के साथ ।
- जावास्क्रिप्ट सख्त मोड के साथ ।
- है W3C सत्यापित किया गया।
- और सुव्यवस्थित और कुशल है।
विकल्प 1 (jQuery के साथ)
इस विकल्प के लिए jQuery की आवश्यकता है और इसका परीक्षण किया गया है और यह 1.7.2 - 3.3.1 के साथ काम कर रहा है
सरल (अपनी मास्टर स्क्रिप्ट फ़ाइल में यह jquery कोड जोड़ें और इसके बारे में भूल जाएं।)
$('textarea').each(function () {
this.setAttribute('style', 'height:' + (this.scrollHeight) + 'px;overflow-y:hidden;');
}).on('input', function () {
this.style.height = 'auto';
this.style.height = (this.scrollHeight) + 'px';
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea placeholder="Type, paste, cut text here...">PRELOADED TEXT.
This javascript should now add better support for IOS browsers and Android browsers.</textarea>
<textarea placeholder="Type, paste, cut text here..."></textarea>
Test on jsfiddle
विकल्प 2 (शुद्ध जावास्क्रिप्ट)
सरल (इस जावास्क्रिप्ट को अपनी मास्टर स्क्रिप्ट फ़ाइल में जोड़ें और इसके बारे में भूल जाएं।)
const tx = document.getElementsByTagName('textarea');
for (let i = 0; i < tx.length; i++) {
tx[i].setAttribute('style', 'height:' + (tx[i].scrollHeight) + 'px;overflow-y:hidden;');
tx[i].addEventListener("input", OnInput, false);
}
function OnInput() {
this.style.height = 'auto';
this.style.height = (this.scrollHeight) + 'px';
}
<textarea placeholder="Type, paste, cut text here...">PRELOADED TEXT. This JavaScript should now add better support for IOS browsers and Android browsers.</textarea>
<textarea placeholder="Type, paste, cut text here..."></textarea>
Test on jsfiddle
विकल्प 3 (jQuery एक्सटेंशन)
उपयोगी है यदि आप आगे के पाठ को लागू करना चाहते हैं, तो आप ऑटो-साइज़ बनना चाहते हैं।
jQuery.fn.extend({
autoHeight: function () {
function autoHeight_(element) {
return jQuery(element)
.css({ 'height': 'auto', 'overflow-y': 'hidden' })
.height(element.scrollHeight);
}
return this.each(function() {
autoHeight_(this).on('input', function() {
autoHeight_(this);
});
});
}
});
के साथ आह्वान किया $('textarea').autoHeight()
UPDATING TEXTAREA VIA JAVASCRIPT
जावास्क्रिप्ट के माध्यम से एक textarea में सामग्री इंजेक्षन जब विकल्प 1 में समारोह आह्वान करने के लिए निम्नलिखित कोड जोड़ें।
$('textarea').trigger('input');
PRESET कपड़ा पाठ ऊँचाई
Textarea की प्रारंभिक ऊंचाई तय करने के लिए आपको एक अतिरिक्त शर्त जोड़ना होगी:
const txHeight = 16;
const tx = document.getElementsByTagName("textarea");
for (let i = 0; i < tx.length; i++) {
if (tx[i].value == '') {
tx[i].setAttribute("style", "height:" + txHeight + "px;overflow-y:hidden;");
} else {
tx[i].setAttribute("style", "height:" + (tx[i].scrollHeight) + "px;overflow-y:hidden;");
}
tx[i].addEventListener("input", OnInput, false);
}
function OnInput(e) {
this.style.height = "auto";
this.style.height = (this.scrollHeight) + "px";
}
<textarea placeholder="Type, paste, cut text here...">PRELOADED TEXT. This JavaScript should now add better support for IOS browsers and Android browsers.</textarea>
<textarea placeholder="Type, paste, cut text here..."></textarea>