সবচেয়ে সহজ সমাধানটি হ'ল নীচের CSS বৈশিষ্ট্য সহ আপনি যে উপাদানটি প্রবেশ করিয়ে দিচ্ছেন সেটি স্টাইল করা:
white-space: pre-wrap;
এই বৈশিষ্ট্যটির সাথে মিলের উপাদানগুলির মধ্যে শ্বেত স্থান এবং নিউলাইনগুলি এ এর অভ্যন্তরের মতো একইরকম আচরণ করা হয় <textarea>। অর্থাত্, পর পরের শ্বেত স্থানটি ধসে পড়ে না, এবং লাইনগুলি স্পষ্টত নিউলাইনগুলিতে ভাঙা হয় (তবে তারা যদি উপাদানটির প্রস্থের বেশি হয় তবে স্বয়ংক্রিয়ভাবে মোড়ানো হবে)।
এখন পর্যন্ত এখানে পোস্ট করা বেশ কয়েকটি উত্তর এইচটিএমএল ইনজেকশনের ঝুঁকির মধ্যে রয়েছে (যেমন তারা অনস্কেপযুক্ত ব্যবহারকারীদের ইনপুট দেয় innerHTML) বা অন্যথায় বগি, আপনার আসল কোডের ভিত্তিতে কীভাবে নিরাপদে এবং সঠিকভাবে এটি করা যায় তার একটি উদাহরণ দেই:
document.getElementById('post-button').addEventListener('click', function () {
var post = document.createElement('p');
var postText = document.getElementById('post-text').value;
post.append(postText);
var card = document.createElement('div');
card.append(post);
var cardStack = document.getElementById('card-stack');
cardStack.prepend(card);
});
#card-stack p {
background: #ddd;
white-space: pre-wrap;
}
textarea {
width: 100%;
}
<textarea id="post-text" class="form-control" rows="8" placeholder="What's up?" required>Group Schedule:
Tuesday practice @ 5th floor (8pm - 11 pm)
Thursday practice @ 5th floor (8pm - 11 pm)
Sunday practice @ (9pm - 12 am)</textarea><br>
<input type="button" id="post-button" value="Post!">
<div id="card-stack"></div>
মনে রাখবেন, আপনার মূল কোডের মতো, উপরের স্নিপেট ব্যবহার করে append()এবং prepend()। এই লেখার হিসাবে, সেই ফাংশনগুলি এখনও পরীক্ষামূলক হিসাবে বিবেচিত হয় এবং সমস্ত ব্রাউজার দ্বারা পুরোপুরি সমর্থিত হয় না। আপনি যদি নিরাপদে থাকতে চান এবং পুরানো ব্রাউজারগুলির সাথে সামঞ্জস্য বজায় রাখতে চান তবে আপনি নীচের মতো খুব সহজেই এগুলি প্রতিস্থাপন করতে পারেন:
element.append(otherElement)সঙ্গে প্রতিস্থাপন করা যেতে পারে element.appendChild(otherElement);
element.prepend(otherElement)সঙ্গে প্রতিস্থাপন করা যেতে পারে element.insertBefore(otherElement, element.firstChild);
element.append(stringOfText)সঙ্গে প্রতিস্থাপন করা যেতে পারে element.appendChild(document.createTextNode(stringOfText));
element.prepend(stringOfText)সঙ্গে প্রতিস্থাপন করা যেতে পারে element.insertBefore(document.createTextNode(stringOfText), element.firstChild);
- বিশেষ স্থান ধার্য, যদি
elementখালি থাকে, উভয় element.append(stringOfText)এবং element.prepend(stringOfText)কেবল সঙ্গে প্রতিস্থাপিত হতে পারে element.textContent = stringOfText।
এখানে উপরে যেমন স্নিপেট রয়েছে তবে ব্যবহার না করে append()বা prepend():
document.getElementById('post-button').addEventListener('click', function () {
var post = document.createElement('p');
var postText = document.getElementById('post-text').value;
post.textContent = postText;
var card = document.createElement('div');
card.appendChild(post);
var cardStack = document.getElementById('card-stack');
cardStack.insertBefore(card, cardStack.firstChild);
});
#card-stack p {
background: #ddd;
white-space: pre-wrap;
}
textarea {
width: 100%;
}
<textarea id="post-text" class="form-control" rows="8" placeholder="What's up?" required>Group Schedule:
Tuesday practice @ 5th floor (8pm - 11 pm)
Thursday practice @ 5th floor (8pm - 11 pm)
Sunday practice @ (9pm - 12 am)</textarea><br>
<input type="button" id="post-button" value="Post!">
<div id="card-stack"></div>
পুনশ্চ. আপনি যদি সিএসএস সম্পত্তি ব্যবহার না করে সত্যিই এটি করতে চান white-space, তবে বিকল্প বিকল্প হ'ল <br>এইচটিএমএল ট্যাগের সাহায্যে পাঠ্যের কোনও নতুন লাইন অক্ষর স্পষ্টভাবে প্রতিস্থাপন করা হবে । জটিল অংশটি হ'ল, সূক্ষ্ম বাগ এবং সম্ভাব্য সুরক্ষা গর্তগুলি প্রবর্তন এড়াতে, আপনাকে এই প্রতিস্থাপনটি করার আগে আপনাকে প্রথমে কোনও HTML মেটাক্রে্যাক্টরগুলি (কমপক্ষে &এবং কমপক্ষে <) পাঠাতে হবে।
সম্ভবত এটির সবচেয়ে সহজ এবং নিরাপদ উপায় ব্রাউজারটি আপনার জন্য এইচটিএমএল-পলায়ন পরিচালনা করতে দেয়, যেমন:
var post = document.createElement('p');
post.textContent = postText;
post.innerHTML = post.innerHTML.replace(/\n/g, '<br>\n');
document.getElementById('post-button').addEventListener('click', function () {
var post = document.createElement('p');
var postText = document.getElementById('post-text').value;
post.textContent = postText;
post.innerHTML = post.innerHTML.replace(/\n/g, '<br>\n');
var card = document.createElement('div');
card.appendChild(post);
var cardStack = document.getElementById('card-stack');
cardStack.insertBefore(card, cardStack.firstChild);
});
#card-stack p {
background: #ddd;
}
textarea {
width: 100%;
}
<textarea id="post-text" class="form-control" rows="8" placeholder="What's up?" required>Group Schedule:
Tuesday practice @ 5th floor (8pm - 11 pm)
Thursday practice @ 5th floor (8pm - 11 pm)
Sunday practice @ (9pm - 12 am)</textarea><br>
<input type="button" id="post-button" value="Post!">
<div id="card-stack"></div>
মনে রাখবেন, এটি লাইন ব্রেকগুলি ঠিক করবে, ততক্ষণে এটি এইচটিএমএল রেন্ডারারের দ্বারা ধীরে ধীরে হোয়াইটস্পেসকে ধসে পড়তে বাধা দেবে না। (সাজানোর) অনুকরণ করা সম্ভব যে পাঠ্যের কিছু শ্বেতস্পেসকে অ-ব্রেকিং স্পেসে প্রতিস্থাপনের মাধ্যমে, তবে সত্যই, এটি এমন কোনও সমস্যার জন্য জটিল হয়ে উঠছে যা সিএসএসের একক লাইন দিয়ে তুচ্ছভাবে সমাধান করা যায়।