2009-05-14 13 views
131

मैं जावास्क्रिप्ट के साथ एक textarea संपादित कर रहा हूँ। समस्या यह है कि जब मैं इसमें लाइन ब्रेक करता हूं, तो वे प्रदर्शित नहीं होंगे। मैं यह कैसे कर सकता हूँ?जावास्क्रिप्ट: एचटीएमएल टेक्स्टरेरा में लाइन ब्रेक कैसे जोड़ें?

मुझे एक समारोह लिखने के लिए मूल्य मिल रहा है, लेकिन यह लाइन ब्रेक नहीं देगा।

उत्तर

227

समस्या तथ्य से आता है कि पंक्ति विराम (\n\r?) HTML के रूप में ही नहीं हैं <br/> टैग

var text = document.forms[0].txt.value; 
text = text.replace(/\r?\n/g, '<br />'); 
+6

यह मेरे लिए भी काम करता है। JQuery में आप ऐसा कुछ कर सकते हैं: $ ('# कैप्शन')। एचटीएमएल ($ ('# कैप्शन')। टेक्स्ट()। प्रतिस्थापित करें (/ \ n \ r?/G, '
')); – DavGarcia

+1

लाइन ब्रेक Regexp '/ (\ r \ n | \ n | \ r)/gm' http://www.textfixer.com/tutorials/javascript-line-breaks.php – tothemario

+0

यदि आप jQuery का उपयोग कर रहे हैं मैं '.val' का उपयोग करने का सुझाव देता हूं - http://stackoverflow.com/questions/5583040/show-newlines-in-html-textarea/5583094#5583094 –

8

आप अंदर textarea

+0

यह मेरे लिए काम करता है, कम से कम क्रोम वी 61 में। – Snorvarg

+0

धन्यवाद .. मेरे लिए भी काम करता है –

3

एक नई लाइन बस ब्राउज़र को खाली स्थान के है linebreaks के लिए \n उपयोग करने की आवश्यकता है और एक सामान्य अंतरिक्ष के लिए किसी भी अलग नहीं माना जाएगा ("")। एक नई लाइन प्राप्त करने के लिए, आपको <BR /> तत्वों को सम्मिलित करना होगा।

समस्या को हल करने का एक और प्रयास: पाठ को टेक्स्टरेरा में टाइप करें और फिर अदृश्य वर्णों को कुछ पठनीय में बदलने के लिए बटन के पीछे कुछ जावास्क्रिप्ट जोड़ें और परिणाम को DIV पर डंप करें। यह आपको बताएगा कि आपका ब्राउज़र क्या चाहता है।

20

अगर आप सामान्य जावा स्क्रिप्ट का उपयोग और आप पाठ के लिए क्षेत्र मूल्य तो

स्ट्रिंग आवंटित करने के लिए की जरूरत है
document.getElementById("textareaid").value='texthere\\\ntexttext'. 

आप \\\n

को \n या <br> प्रतिस्थापित करने की आवश्यकता अन्यथा यह सभी ब्राउज़रों पर Uncaught SyntaxError: Unexpected token ILLEGAL देता है।

+0

फ़ायरफ़ॉक्स में काम नहीं करता 38.0 – Randall

11

हो सकता है कि किसी व्यक्ति को ढूंढने का उपयोग लाइन टूट के साथ सर्वर से testarea का मूल्य भेजना चाहते हैं तो यह उपयोगी:

मैं पंक्ति विराम जो सर्वर चर से जावास्क्रिप्ट को पारित किए गए के साथ समस्या थी परिवर्तनीय, और फिर जावास्क्रिप्ट उन्हें textarea (knockout.js मान बाइंडिंग का उपयोग करके) लिख रहा था। ,

orginal.Replace("\r\n", "\\r\\n") 
सर्वर साइड पर

क्योंकि सिर्फ एक भागने वर्ण जावास्क्रिप्ट को पार्स नहीं किया गया था के साथ:

समाधान डबल नई लाइनों से बचने की गई थी।

+0

"\\ n" विंडोज़ में मेरे लिए काम करता है और मुझे लगता है कि यह लिनक्स सिस्टम में ठीक काम करेगा। –

0

यह वही है जो मैंने एक ही परेशानी के लिए किया था।

जब मैं jsp में अगले पृष्ठ पर पाठ गुजर रहा हूँ, मैं इसे एक पाठ क्षेत्र के रूप में के बजाय पढ़ रहा हूँ की तरह

कुछ पढ़ने का इतना उत्पादन आया के रूप में आप चाहते थे। और अन्य गुणों के लिए, आप नीचे के रूप में उपयोग कर सकते हैं।

<textarea style="background-color: white; border: none; width:660px;font-family: Arial, Helvetica, sans-serif; font-size:1.0em; resize:none;" name="text" cols="75" rows="15" readonly="readonly" ><s:property value="%{text}"/></textarea> 
2

मैं एक पाठ क्षेत्र है आईडी के साथ #infoartist है पालन:

<textarea id="infoartist" ng-show="dForm" style="width: 100%;" placeholder="Tell your contacts and collectors about yourself."></textarea> 

जावास्क्रिप्ट कोड में, मैं पाठ क्षेत्र के मूल्य मिलता है और नई लाइन (\ n \ r) भागने से बदल देंगे द्वारा <br /> टैग, जैसे:

var text = document.getElementById("infoartist").value; 
text = text.replace(/\r?\n/g, '<br />'); 

तो तुम jQuery उपयोग कर रहे हैं (मेरे जैसे):

var text = $("#infoartist").val(); 
text = text.replace(/\r?\n/g, '<br />'); 

आशा है कि इससे आपकी मदद मिलेगी। :-)

संबंधित मुद्दे