اعمال اینترهای کاربر در textarea هنگام نمایش متن آن - کاربرد white-space در css
سلام و عرض ادب خدمت دوستان
آیا راهی وجود داره که اینتر هایی که در textarea زده میشه رو در دیتابیس ذخیره کرد ؟
در بخش نظر های یک سایت، ما یک textarea داریم و کاربر متنی که در اون تایپ میکنه، اگه اینتر بزنه و بره خط بعد، عملا در دیتابیس چنین چیزی اعمال نمیشه یا بعبارتی محتوای textarea بدون تگ ذخیره میشه. پس در نتیجه هنگام نمایش دادن اون نظر، همه اینتر هایی که کاربر زده، حذف میشه و جملات پشت هم میان
حالا من از ckeditor استفاده کردم و طبیعتا مشکل حل شد اما متوجه یه مشکل جدید شدم اونم اینه که زمانی که میخوایم پاسخی به نظر بدیم، تگ textarea میاد و append میشه داخل اون نظری که قصد پاسخ بهش رو داریم. حالا بعد از جابجایی این ckeditor ( همون تگ textarea ) که از جای خودش جابجا شده و اومده داخل اون نظری که قصد پاسخ بهش رو داریم، دیگه این ckeditor حالت غیرفعالی به خودش میگیره و امکان تایپ نمیده، و حتی مجدد برگرده سر جای خودش هم همینطوره
خیلی تست های مختلف انجام دادم اما باز حل نشد. آیا راه حلی وجود نداره ؟ صرفا هدف اینه بتونم اینتر های کاربر رو اوکی کنم و پشت هم نشون نده. در بخش نظر که برای سوال و پاسخ پرس نت هم وجود داره میتونید متوجه منظورم بشید که پشت هم اومدن
پاسخ هوش مصنوعی
برای حفظ اینترها و نمایش صحیح متن کاربر در بخش نظرها، شما نیاز دارید که کاراکترهای اینتر را به خطوط جدید تبدیل کنید. این کار را می توانید با استفاده از CSS انجام دهید. خاصیت white-space
به شما این امکان را می دهد تا نحوه نمایش فضاهای خالی و اینترها را کنترل کنید.
به عنوان مثال، می توانید از کد زیر برای نمایش متن نظرات استفاده کنید:
.comment {
white-space: pre-wrap; /* حفظ فضاهای خالی و اینترها */
}
با استفاده از این خاصیت، هر بار که کاربر یک اینتر می زند، اینترها به عنوان خط جدید در صفحه نمایش داده می شوند.
حال اگر شما از CKEditor استفاده می کنید و می خواهید که هنگام جابجایی textarea، متن و ویژگی های آن حفظ شود، باید بررسی کنید که آیا CKEditor به درستی آزاد و دوباره مقداردهی می شود یا خیر. برای این کار، مطمین شوید که:
// کد جاوا اسکریپت برای نوسازی CKEditor
CKEDITOR.instances['editor1'].updateElement(); // این خط برای آپدیت مقدار و چک کردن وجود instace جدید
CKEDITOR.replace('editor1'); // برای ایجاد مجدد CKEditor
با استفاده از این روش ها، می توانید اطمینان حاصل کنید که اینترهای کاربر حفظ شده و درست نمایش داده می شوند.
ببینید به صورت پیش فرض textarea استایل رو نمایش نمیده و ذخیره هم نمیکنه در دیتابیس. در اکثر سایتها هم معمولا به همین شکل هست. یعنی معمولا در قسمتهایی که کاربر میتونه اطلاعات وارد کنه به خاطر موضوع امنیت بهتره فقط متن رو بتونه کاربر وارد کنه. اما اگر فقط در این حد که کاربر بتونه Enter رو بزنه و اطلاعات در خط بعد نمایش داده بشه میتونید به صورت زیر عمل کنید.
کدهای textarea هیچ تغییری نیازی نیست کنه.
<textarea id='mytxt'></textarea>
اما در بخشی که میخواید اطلاعات رو نمایش بدید میتونید از یک style مربوط به css استفاده کنید.
<span style='white-space:pre-line;'></span>
به عنوان مثال در همین پرس نت که شما توی نظر دو بار اینتر زدید به صورت زیر نمایش داده میشه.
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2