2011-06-13 6 views
17

मेरे पास एक टेक्स्टरेरा है जहां मैं \n डालता हूं जब उपयोगकर्ता एंटर दबाता है। इस textarea से कोड jQuery.ajax() के माध्यम से एक डब्ल्यूसीएफ सेवा में भेजा जाता है। मैं डीबी में \n को सहेज नहीं सकता क्योंकि यह सेवा उपभोग करने वाले अन्य अनुप्रयोगों में नहीं दिखाया जाएगा।जावास्क्रिप्ट में <br /> के साथ n को कैसे बदलें?

<br /> टैग के साथ मैं \n को कैसे बदल सकता हूं?

समाधान

आप की खैर कई की कोशिश की और कुछ सही/जी (वैश्विक संशोधक) के साथ जावास्क्रिप्ट Regex के साथ मिल गया। अंत में मैंने दो बार डाला था, मुझे नहीं पता क्यों, मेरा एकमात्र अनुमान यह है कि कुंजीपटल इवेंट पर jQuery ने डबल \ n बनाया जो मैंने डीबग किया।

$('#input').keypress(function (event) { 
    if (event.which == '13') { 
     inputText = $('#input').val() + '\n'; 
     $('#input').val(inputText); 
    } 
}); 
+6

आमतौर पर यह एक अच्छा विचार ग्राहक के पक्ष – Teneff

+0

@Teneff पर इसे बदलना नहीं है, \ n सर्वर से तो नहीं भेज दिया जाता है, यह है छोड़ दिया जाता है। मैं इसे सर्वर पर बदल सकता हूं लेकिन मुझे टेक्स्ट को छोड़कर कुछ भी नहीं मिलता है। – eugeneK

+1

आपको इसे कच्चे प्रारूप में भी स्टोर करना चाहिए, अगर आपने कभी भी डेटा पुनर्प्राप्त करने के लिए एक नया ऐप जोड़ा है जो/n का समर्थन कर सकता है तो निश्चित रूप से आपको इसे दिखाना चाहिए? क्या आपने इसे एन्कोडिंग करने की कोशिश की है? – jimplode

उत्तर

26

वैश्विक विस्तार के साथ बदलें

$('#input').val().replace(/\n/g, "<br />") 

या

$('#input').val().replace("\n", "<br />", "g") 
+1

यह विश्व स्तर पर ठीक बदल देता है, लेकिन यह कुंजी दबाने – eugeneK

11

इसे इस तरह किया जा सकता है:

$('textarea').val().replace(/\n/g, "<br />"); 

संपादित: खेद ... जावास्क्रिप्ट में नियमित अभिव्यक्ति चाहिए उद्धृत नहीं किया गया

working example

+0

के साथ ऐसा करते हैं ' टी काम नहीं, क्यों नहीं पता !!! – eugeneK

+0

काम नहीं करता है क्योंकि वह '\ n' को प्रतिस्थापित करना चाहता है और'/\ n/'नहीं। और यदि यह एक regex होने का इरादा था तो यह केवल पहली घटना को प्रतिस्थापित करेगा। – BrunoLM

+1

यह गलत है। '" \ N "' या '/ \ n /' का प्रयोग करें, \ "/ \ n /" '। जब रेगेक्स उद्धरण की बात आती है तो जावास्क्रिप्ट PHP के रूप में विकलांग नहीं है;) – Qtax

1

आप एक साधारण जावास्क्रिप्ट स्ट्रिंग फ़ंक्शन का उपयोग कर सकते हैं।

string.replace("\n", "<br>") 
1

आपकी डब्ल्यूसीएफ सेवा के भीतर से आप केवल String.Replace का उपयोग नहीं कर सकते हैं?

text = text.Replace("\n","<br />"); 
6

टिप्पणियों और अन्य उत्तरों में कहा गया है, सर्वर सर्वर पर ऐसा करना बेहतर है।

लेकिन यदि आप जानना चाहते हैं कि clientside पर यह क्या करना चाहते हैं यह एक आसान ठीक है:

textareaContent.replace(/\\n/g, "<br />"); 

कहाँ textareaContent पाठ क्षेत्र में डेटा के साथ चर रहा है।

संपादित करें: बदल गया ताकि यह वैश्विक स्तर पर बदल सके और न केवल पहले मैच।

+0

यह \ n – eugeneK

+0

की पहली उपस्थिति को प्रतिस्थापित करता है, यह ध्यान देने के लिए धन्यवाद। – rzetterberg

+0

एकमात्र समाधान है कि मेरे लिए काम किया ... धन्यवाद :) –

1
var replaced = $('#input').val().replace("\n", "<br/>"); 
1

आप उदाहरण के लिए, में बनाया regex की थोड़ी सी सहायता से समारोह की जगह जावास्क्रिप्ट का उपयोग कर सकते

$('#input').val().replace(/\n\r?/g, '<br />') 

यह कोड सभी प्रविष्टियों को प्रतिलिपि वापस कर देगा <br>

+0

पर दो बार br टैग की जगह यह इस पूरे पृष्ठ है कि वर्डप्रेस संपादक के लिए मेरे लिए काम किया में से केवल एक है। यदि आप प्लगइन में एक वर्डप्रेस एडिटर का उपयोग कर रहे हैं, और कुछ कारणों से संपादकों की सामग्री का पूर्वावलोकन दिखाएं, तो यह केवल एकमात्र ऐसा काम करता है जो काम करता है। –

+0

क्या आपने वास्तव में इस प्रश्न से हर समाधान की कोशिश की, यदि आपने किया तो आप वास्तव में लगातार हैं। :) –

2

अन्य उत्तरों पर बिल्डिंग, यह शायद php द्वारा सबसे अच्छा किया जाता है।अब यह सोचते हैं आप इस अजाक्स (जो व्यर्थ हो सकता है और अनावश्यक सर्वर लोड का कारण होता है) नहीं करना चाहते, तो आप शायद phpjs.org के this function की जावास्क्रिप्ट बंदरगाह का उपयोग करना चाहिए:

function nl2br (str, is_xhtml) { 
    // Converts newlines to HTML line breaks 
    // 
    // version: 1103.1210 
    // discuss at: http://phpjs.org/functions/nl2br // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) 
    // + improved by: Philip Peterson 
    // + improved by: Onno Marsman 
    // + improved by: Atli Þór 
    // + bugfixed by: Onno Marsman // +  input by: Brett Zamir (http://brett-zamir.me) 
    // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) 
    // + improved by: Brett Zamir (http://brett-zamir.me) 
    // + improved by: Maximusya 
    // *  example 1: nl2br('Kevin\nvan\nZonneveld'); // *  returns 1: 'Kevin\nvan\nZonneveld' 
    // *  example 2: nl2br("\nOne\nTwo\n\nThree\n", false); 
    // *  returns 2: '<br>\nOne<br>\nTwo<br>\n<br>\nThree<br>\n' 
    // *  example 3: nl2br("\nOne\nTwo\n\nThree\n", true); 
    // *  returns 3: '\nOne\nTwo\n\nThree\n' var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '' : '<br>'; 

    return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2'); 
} 

http://phpjs.org/functions/nl2br:480

+0

क्या $ 1 और $ 2 का मतलब है? ([^> \ r \ n]?) और (\ r \ n | \ n \ r | \ r | \ n) – eugeneK

+0

आपको सत्य बताने के लिए, मैं रेगेक्स के साथ इतना अच्छा नहीं हूं जैसा कि मुझे होना चाहिए। लेकिन मुझे इसके बारे में बहुत कुछ पता है इन दो लिंक में सारांशित किया गया है: डॉलर संकेत - http://mootools-users.660466.n2.nabble.com/Moo-preg-replace-in-javascript-td4718179.html; सभी आर और एन - http://lawrence.ecorp.net/inet/samples/regexp-format.php (एचटीएमएल ब्र के साथ कैरिज रिटर्न को बदलने के बारे में अनुभाग में स्क्रॉल करें और कोड यहां दिखाए गए अनुसार काम करता है - http://jsfiddle.net/Dar96/9/ – Tomas

1

निम्नलिखित का स्थान ले लेगा एक <br /> साथ \n के सभी उदाहरणों:

while (message.indexOf("\\n") !== -1) { 
    message = message.replace("\\n", "<br />"); 
} 
+0

एक पुनरावृत्ति पर्याप्त है, क्योंकि यह सभी अवसरों को प्रतिस्थापित करता है। –

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