درود و عرض ادب
فرمی دارم که با asp نوشته شده اما فیلدهای داخل آن بصورت سمت کلاینت تعریف شده اند وقتی دکمه ذخیره اطلاعات را می زنم ابتدا فیلدها ارزیابی می شوند و اگر مقدار فیلدی اشتباه باشد و پیامی صادر شده و به صفحه برمی گردد اما صفحه رفرش شده و کلیه فیلدها پاک میشوند قطعاً رفع این قضیه با Ajax امکان پذیر است اما مدلهایی که گرفته و استفاده کرده ام جواب نمی دهد یعنی مقدار فیلدها باز هم پاک میشود
نمونه کد asp
Dim strMelCode As String = Request.Form("HdMeliCode")
ScriptManager.RegisterStartupScript(Me, Me.GetType, "k", "AjaxRequest('txtMelliCode','txtMelliCode','2')", True)
If strMelCode.Length < 10 Then
Dim str1 As String = "کد ملی بایستی 10 رقمی باشد"
Call ShowPm(str1)
Exit Sub
End If
در کد فوق scriptmanager وظیفه اجرای تابع جاوای AjaxRequest را دارد
این هم تابع AjaxRequest که از سایتی گرفته ام
function AjaxRequest(inputname,divid,inputvalue){
var formvalue = inputname+"="+inputvalue.value;
var loadingmessage = '<img src="Img/User.png" alt="loading" height="16" width="16" />';
var xmlhttp;
if (window.XMLHttpRequest){
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState<4){
document.getElementById(divid).innerHTML=loadingmessage;
}
else if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById(divid).innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST","Student_Profile.aspx",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send(formvalue);
}
}
لطفاً در صورتی که مطالب فوق برایتان قابل قبول نیست یا ناقص است ممنون میشوم از اول و شماره و ساده مطالب را برایم بیان فرمایید
با سپاس
قطعا برای اینکه صفحه شما رفرش نشود باید از اعتبارسنجی های سمت کلاینت استفاده بشه. این اعتبارسنجی توسط جاوا اسکریپت با جی کوئری انجام می شود. شما باید نحوه کار با ایجکس رو یاد بگیرید در مرحله اول. البته انجام این کار خیلی ساده است. براتون یک مثال رو به صورت ساده البته با استفاده از Asp.net Core می نویسم چون با Asp Classic کار نکردم ولی خب تفاوتی هم نمیکنه.
در ابتدا فرض کنید form زیر را دارید.
<form>
<input type='text' id='txtname' />
<input type='text' id='txtfamily' />
<input type='number' id='txtage' />
<button type='submit' class='btn'>ثبت اطلاعات</button>
</form>
به صورت خیلی ساده 3 تگ input جهت ورود اطلاعات داریم. حالا شما میتونید با استفاده از دستورات جی کوئری به راحتی این فیلدها رو اعتبارسنجی کنید.
پس کدهای زیر رو به انتهای این form در View اضافه می کنیم.
<script>
var myname = $("#txtname").val();
var myfamily = $("#txtfamily").val();
var myage = $("#txtage").val();
if (myname == '' || myname == null)
{
alert('نام خالی است.');
return false;
}
if (myfamily == '' || myfamly == null)
{
alert('نام خانوادگی وارد نشده است');
return false;
}
if (myfamily.length() < 5)
{
alert('نام خانوادگی حداقل باید 5 کاراکتر باشد');
return false;
}
if (myage < 10)
{
alert('سن نمی تواند کمتر از 10 سال باید');
return false;
}
$.ajax({
....
})
</script>
همونطوری که می بینید به راحتی فیلدها اعتبارسنجی شدن. شما هر اعتبار سنجی دیگه ای که بخواید هم میتونید انجام بدید.
اگر بخواید به صورت حرفه ای تری اعتبارسنجی رو انجام بدید میتونید از پلاگین jquery validation هم استفاده کنید.
خیلی ساده و زیبا پاسخ دادید سپاسگذارم.
درود یک مسئله ای رو در پاسخ شما دقت نکردم دوست عزیز، شما مسئله اعتبار سنجی منو اشتباه متوجه شدید کنترل مقدار یا نوع ورودی ها من در سمت کلاینت انجام نمیشه بلکه در سمت سرور است مشکل اینجاست
1- مقدار ورودی رو چک کن
2- اگر ورودی واردنشده بود یا مشمول شرط نبود پیامی نشان بده و از این روتین خارج شو.
برنامه برای نمایش پیام با sweetalert میره سمت کلاینت و بر میگرده به سرور و این باعث میشه کل جعبه متنهای روی صفحه من خالی بشن(صفحه رفرش بشه) در واقع المنتهای صفحه من همگی به مقدار اولیه ست بشن من می خواستم مانع این کار بشم و در سایتهای مختلف بهترین راهکار رو استفاده از ajax پیشنهاد کرده بودن که چون به آزاکس مسلط نیستم ناچارا المنتها رو از سمت کلاینت تبدیل کردم به سمت سرور مثلاً
<"input type="text"> تبدیل شد به <asp:TextBox> و مشکل حل شد
درود دو عرض ادب ، مشکل هنوز باقی است شاید بیان من ناقص بوده
در صفحه وب سایت من که در asp.net است تعدادی ورودی وجود دارد مثلاً جعبه متن،دکمه،لیست بازشو و...
هر گاه من با یکی از اینها عملی انجام دهم مثل کلیک روی دکمه، تعییر گزینه در لیست بازشو یا فشار کلیدی خاص در جعبه متن یک روتین سمت سرور اجرا میشود مثلا مجموعه دستورات c# یا vb، فرضا پیامی ظاهر شده و پاسخی دریافت میشود اما موقع برگشت به صفحه تمام فیلدها به مقدار اولیه اشان بر می گردند یا ریست میشوند دوستان عزیز در سری های قبل زحمت کشیده با جاوا اسکریپ یا jquery پاسخ داده اند آیا راهی ندارد با امکانات خود زبان سمت سرور این مشکل حل شود؟
تاریخ :
1398/08/09
- ساعت :
07:44:00 PM
- بازدید :
4855
- پاسخ :
1
|
تاریخ :
1398/10/15
- ساعت :
08:02:00 PM
- بازدید :
2726
- پاسخ :
1
|
تاریخ :
1398/10/19
- ساعت :
02:01:00 PM
- بازدید :
3087
- پاسخ :
2
|
تاریخ :
1398/10/19
- ساعت :
02:54:00 PM
- بازدید :
2783
- پاسخ :
3
|
تاریخ :
1398/10/18
- ساعت :
10:26:00 PM
- بازدید :
3176
- پاسخ :
2
|
تاریخ :
1403/10/20
- ساعت :
12:45:00 AM
- بازدید :
75
- پاسخ :
0
|
تاریخ :
1398/09/17
- ساعت :
08:57:00 AM
- بازدید :
2067
- پاسخ :
1
|
تاریخ :
1398/09/08
- ساعت :
08:52:00 PM
- بازدید :
4053
- پاسخ :
3
|
تاریخ :
1399/06/22
- ساعت :
08:02:00 PM
- بازدید :
4028
- پاسخ :
1
|
تاریخ :
1403/10/08
- ساعت :
12:22:00 PM
- بازدید :
80
- پاسخ :
1
|
تاریخ :
1403/11/03
- ساعت :
07:34:00 PM
- بازدید :
50
- پاسخ :
0
|
تاریخ :
1399/12/20
- ساعت :
10:32:00 AM
- بازدید :
2517
- پاسخ :
1
|
تاریخ :
1398/08/09
- ساعت :
07:44:00 PM
- بازدید :
4855
- پاسخ :
1
|
تاریخ :
1399/09/20
- ساعت :
01:30:00 PM
- بازدید :
2569
- پاسخ :
1
|
تاریخ :
1403/11/03
- ساعت :
07:21:00 PM
- بازدید :
39
- پاسخ :
0
|
تاریخ :
1403/10/22
- ساعت :
12:29:00 PM
- بازدید :
78
- پاسخ :
1
|
تاریخ :
1399/09/20
- ساعت :
01:21:00 PM
- بازدید :
6636
- پاسخ :
1
|
تاریخ :
1403/11/02
- ساعت :
08:17:00 PM
- بازدید :
41
- پاسخ :
0
|
تاریخ :
1398/10/15
- ساعت :
08:02:00 PM
- بازدید :
2726
- پاسخ :
1
|
تاریخ :
1398/10/19
- ساعت :
02:01:00 PM
- بازدید :
3087
- پاسخ :
2
|