View Full Version : سوال: نمایش پیغام در چند خط
mohsen..f
پنج شنبه 05 دی 1392, 19:09 عصر
سلام
تو asp برای نشون دادن اخطار کامل کردن تکست باکس ها از جاوا اسکریپت استفاده کردم.
کدی که زیر نوشتم موقع اجرا تمام ارور هارو تو یک خط نشون میده.
من میخوام هر ارور تو یه خط باشه. انواع تگ هارو هم تست کردم مثل </n - <br/ اما نتیجه نداد.
لطفا بگید از چه تگ و کجای کد قرار بدم.
پروژه اصلی asp با زبان c# و تیکه کد زیر جاوا اسکریپت
eror = "";
if (cmbgroup.Text == "")
eror = "لطفا گروه را انتخاب کنید";
if (txtquistion.Text == "")
eror += "لطفا متن سوال را بنویسید ";
if (txtcase1.Text == "")
eror += "لطفا جواب قسمت 1 را بنویسید ";
if (txtcase2.Text == "")
eror += "لطفا جواب قسمت 2 را بنویسید ";
if (txtcase3.Text == "")
eror += "لطفا جواب قسمت 3 را بنویسید ";
if (txtcase4.Text == "")
eror += "لطفا جواب قسمت 4 را بنویسید ";
if (cmbanswer.Text == "")
eror += "لطفا مشخص کنید کدام گزینه صحیح است ";
if (eror != "")
Response.Write("<script language='javascript'>alert('" + eror + "')</script>");
else
{
...
}
mohsen..f
پنج شنبه 05 دی 1392, 22:11 عصر
:ناراحت: :افسرده:
Javidhb
جمعه 06 دی 1392, 00:46 صبح
برای خط جدید باید از n\ استفاده کنید...
توی کدتون باید توی خط 17، کاراکتر / قبل از script اسکیپ(قبلش یه \ قرار بگیره) بشه یعنی به این شکل در بیاد: <script/\>
eror = "";
if (cmbgroup.Text == "")
eror = "لطفا گروه را انتخاب کنید \n";
if (txtquistion.Text == "")
eror += "لطفا متن سوال را بنویسید \n";
if (txtcase1.Text == "")
eror += "لطفا جواب قسمت 1 را بنویسید \n";
if (txtcase2.Text == "")
eror += "لطفا جواب قسمت 2 را بنویسید \n";
if (txtcase3.Text == "")
eror += "لطفا جواب قسمت 3 را بنویسید \n";
if (txtcase4.Text == "")
eror += "لطفا جواب قسمت 4 را بنویسید \n";
if (cmbanswer.Text == "")
eror += "لطفا مشخص کنید کدام گزینه صحیح است \n";
if (eror != "")
document.write('<script>alert(' + eror + ')<\/script>');
البته چون محیط asp ندارم نتونستم تستش کنم... اگه جواب نداد باید ببینید چه اروری میده.. برای اینکار میتونید از DevTools کروم (قسمت console) استفاده کنید.
mohsen..f
جمعه 06 دی 1392, 08:26 صبح
وقتی از n/ استفاده میکنم و دکمه ای که کد رو اجرا میکنه میزنم ویژال یه کادر ارور باز میکنه
JavaScript critical error....
script 1015:unterminated string constant
Javidhb
جمعه 06 دی 1392, 10:50 صبح
بجای n/ باید از n\ استفاده کنید..
ارور میگه که string درست بسته نشده... بخاطر اینه که شما از / (کنار n برای ایجاد خط جدید) استفاده کردید.
/ باید با \ escape بشه... مثل همون کاری که آخر خط 17 با <script/\> کردیم..
بصورت کلی بعضی از کاراکترها معنی خاصی دارن و بصورت معمولی نمیتونید توی رشته ها ازشون استفاده کنید (وسطای این صفحه توی یه جدول همشون رو آورده (http://www.w3schools.com/js/js_obj_string.asp))
یکی از این کارکترها " هست ... " توی جاوااسکریپت برای تعریف string استفاده میشه... پس نمیتونید ازش مثلا برای نشون دادن نقل قول توی انگلیسی استفاده کنید، یعنی این اشتباست:
var str = "he said, "he was sorry"";
برای استفاده بی دردسر باید قبل این کاراکترهای خاص از \ استفاده کنید و به اصطلاح escape شون کنید. مثال بالا بعد از escape شدن:
var str = "he said, \"he was sorry\"";
http://www.htmlgoodies.com/beyond/javascript/article.php/3470891
mohsen..f
جمعه 06 دی 1392, 12:21 عصر
وقتی n\ میزارم خود همین حرف و کارکتر رو تو پیغام نوشن میده :افسرده:
Javidhb
جمعه 06 دی 1392, 14:52 عصر
نمیدونم والا..
ببینید این کد الان خروجیش همونیه که مد نظر شماست:
var eror = "";
eror = "لطفا گروه را انتخاب کنید \n";
eror += "لطفا متن سوال را بنویسید \n";
document.write("<script>alert(eror);<\/script>");
114481
این خطتون رو هم باید اینجوری بنویسید:
document.write('<script>alert(eror);<\/script>');
mohsen..f
جمعه 06 دی 1392, 15:31 عصر
حرف شما درسته و کد تو محیط جاوا اسکریپت بدرستی عمل میکنه. اما تو asp ارور میده.
جالب اینه که ارور که میده کدها تو محیط ویژال استدیو درست نمایش میده. اما نمیدونم چیکار کنم که ارور ظاهر نشه و پیغام تو مرورگر ایجاد بشه.
114487
Mohammad_dn
جمعه 06 دی 1392, 15:56 عصر
دوست عزیز شما باید از <br /> استفاده کنی نه از \n
mohsen..f
جمعه 06 دی 1392, 16:50 عصر
میشه لطف کنی و بگی به چه صورت بزارم.
چون داخل دابل کوتیشن که میزارم تو پیغام عینا چاپ میشه و بیرونشم که میزارم ارور میده
Javidhb
جمعه 06 دی 1392, 21:39 عصر
داداش واقعا شرمنده ... چون نمیتونم خودم تست کنم مجبورم همینجوری یه تیری تو تاریکی بندازم :چشمک:
یه asp کار هم از این طرفا رد نمیشه تا یکم بدادمون برسه!
اینو همینجوری یهو به ذهنم رسید... اگه کار کرد بگو تا بعدا توضیح بدم... اگه کار نکرد... :افسرده:
eror = "";
if (cmbgroup.Text == "")
eror = "لطفا گروه را انتخاب کنید \ \n";
if (txtquistion.Text == "")
eror += "لطفا متن سوال را بنویسید \ \n";
if (txtcase1.Text == "")
eror += "لطفا جواب قسمت 1 را بنویسید \ \n";
if (txtcase2.Text == "")
eror += "لطفا جواب قسمت 2 را بنویسید \ \n";
if (txtcase3.Text == "")
eror += "لطفا جواب قسمت 3 را بنویسید \ \n";
if (txtcase4.Text == "")
eror += "لطفا جواب قسمت 4 را بنویسید \ \n";
if (cmbanswer.Text == "")
eror += "لطفا مشخص کنید کدام گزینه صحیح است \ \n";
if (eror != "")
document.write('<script>alert(eror);<\/script>');
ویرایش (کد بالا ویرایش شد):
چون داری مقدار متغیر eror رو توی داکیومنت write میکنید، و از طرفی هم توی متغیر از n\ برای ایجاد خط جدید استفاده میکنید، انگار این دستور رو دارید اجرا میکنید:
alert('لطفا گروه را انتخاب کنید
لطفا متن سوال را بنویسید');
به همین دلیل باید از \ انتهای هر خط رشته استفاده کرد تا بشه string هایی که چند خطی هستن رو چاپ کرد:
alert('لطفا گروه را انتخاب کنید \
لطفا متن سوال را بنویسید');
در مورد کد شما، چون دارید با n\ خط جدید ایجاد میکنید باید قبل از n\ از \ برای حل مشکل چند خطی بود رشته رو حال کنید.
Mohammad_dn
جمعه 06 دی 1392, 23:09 عصر
اینم کدی که اینقدر دنبالش میگشتید
string strMsg = "Hi";
Response.Write(@"<script>alert('My Message\n" + strMsg + "');</script>");
mohsen..f
جمعه 06 دی 1392, 23:14 عصر
Javidhb (http://barnamenevis.org/member.php?37577-Javidhb) ممنون از لطفت اما کار نکرد داداشم.
Mohammad_dn (http://barnamenevis.org/member.php?292342-Mohammad_dn)
این کد که گذاشتین فرق میکنه!!!
متن تو متغیر eror باید شکسته بشه
Mohammad_dn
شنبه 07 دی 1392, 12:33 عصر
بیشتر دقت کنید!!!
کد جدید:
string error = @"My Message\nHi";
Response.Write(@"<script>alert('" + error + "');</script>");
mohsen..f
شنبه 07 دی 1392, 20:18 عصر
دمت گرم. مشکل پس از اتس ساین @ بود که نمیزاشتم. اما نمیدونم کاربرد عملیش چیه.
کد نهایی واسه کسایی که به چنین مشکلی برخورد کردند:
eror = "";
if (cmbgroup.Text == "")
eror = @"لطفا گروه را انتخاب کنید \n";
if (txtquistion.Text == "")
eror += @"لطفا متن سوال را بنویسید \n";
if (txtcase1.Text == "")
eror += @"لطفا جواب قسمت 1 را بنویسید \n";
if (txtcase2.Text == "")
eror += @"لطفا جواب قسمت 2 را بنویسید \n";
if (txtcase3.Text == "")
eror += @"لطفا جواب قسمت 3 را بنویسید \n";
if (txtcase4.Text == "")
eror += @"لطفا جواب قسمت 4 را بنویسید \n";
if (cmbanswer.Text == "")
eror += @"لطفا مشخص کنید کدام گزینه صحیح است \n";
if (eror != "")
{
Response.Write(@"<script language='javascript'>alert('" + eror + "');</script>");
}
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.