मैं एक कस्टम पाठ क्षेत्र है प्रदर्शित किए बिना एक कस्टम पाठ क्षेत्र में एक कैरट दिखाएं। इस उदाहरण में, यह यादृच्छिक रूप से अक्षरों को लाल या हरा बनाता है।अपने पाठ
var mydiv = document.getElementById('mydiv'),
myta = document.getElementById('myta');
function updateDiv() {
var fc;
while (fc = mydiv.firstChild) mydiv.removeChild(fc);
for (var i = 0; i < myta.value.length; i++) {
var span = document.createElement('span');
span.className = Math.random() < 0.5 ? 'green' : 'red';
span.appendChild(document.createTextNode(myta.value[i]));
mydiv.appendChild(span);
}
};
myta.addEventListener('input', updateDiv);
body { position: relative }
div, textarea {
-webkit-text-size-adjust: none;
width: 100%;
white-space: pre-wrap;
word-wrap: break-word;
overflow-wrap: break-word;
font: 1rem sans-serif;
padding: 2px;
margin: 0;
border-radius: 0;
border: 1px solid #000;
resize: none;
}
textarea {
position: absolute;
top: 0;
color: transparent;
background: transparent;
}
.red { color: #f00 }
.green { color: #0f0 }
<div id="mydiv"></div>
<textarea id="myta" autofocus=""></textarea>
इस पर एक पाठ क्षेत्र के साथ एक निर्गम div नहीं है। तो textarea नीचे रंगीन चीजों को कवर नहीं करता है, इसका रंग और पृष्ठभूमि पारदर्शी पर सेट हैं। सबकुछ यहां काम करता है, सिवाय इसके कि देखभाल (उपयोगकर्ता एजेंट द्वारा प्रदान किया गया चमकदार कर्सर) पारदर्शी है।
वहाँ पाठ क्षेत्र के पाठ दिखाई किए बिना कैरट दिखाने के लिए एक तरीका है?
यदि मैं इसके बजाय टेक्स्टरेरा के ऊपर div बना देता हूं और इसे pointer-events: none
देता हूं, तो टेक्स्टरेरा अभी भी नीचे दिखाई देता है। यह व्यवस्था चिकनी स्क्रॉलिंग को भी मुश्किल बनाती है, इसलिए यह मेरे लिए काम नहीं करती है।
contenteditable एक ऐसा फ़ॉर्म तत्व नहीं है और के बाद से डेटा हानि हो सकती है इसकी सामग्री ब्राउज़र द्वारा सहेजी नहीं गई है। यह काम करने के लिए भी बहुत गन्दा है। – bjb568
संबंधित: http://stackoverflow.com/questions/20728150/unusual-shape-of-a-textarea#comment31094671_20728150 और http://stackoverflow.com/questions/20728150/unusual-shape-of-a-textarea#comment31158616_20728275 – bjb568
यदि आप 'textarea' भी चाहते हैं, तो [यह नया डेमो] देखें (https://jsfiddle.net/bb5jmw95/1/)। मैं केवल 'मायटा' जोड़ता हूं।मूल्य = पाठ; 'textarea' में पाठ सेट करने के लिए भी। फिर आप 'textarea' को 'डिस्प्ले: कोई नहीं;' के साथ आसानी से छुपा सकते हैं। आशा है कि यह मदद :) – lmgonzalves