PDA

View Full Version : چک کردن چندین خاصیت برای تکس باکس .. (بسیار فوری :()



ealireza
چهارشنبه 24 فروردین 1384, 21:12 عصر
با سلام
اگه میشه بگید چطوری میشه با یک لیبل چندین RegularExpressionValidator و .. رو با هم استفاده کرد
در بعض از فرم ها به علت کمبود جا نمیشه از چند تا RegulaValidator استفاده کرد
اگه میشه بگید مثلا چطوری مثلا محتوای یک TextBox رو از نظر عددی بودن , Null نبودن , ... با پیغام ها خطای مختلف فقط در یک Lable نمایش داد
فقط توجه داشته باشید فرم باید در کلاینت چک بشه !

اگه میشه راهنمایی کنید ... مرسی

Behrouz_Rad
پنج شنبه 25 فروردین 1384, 09:32 صبح
RegularExpressionValidator را در جایی که قصد نمایش خطا را دارید قرار دهید.
برای هر عمل چک کردن باید یک RegularExpressionValidator جداگانه ایجاد کنید.
مثال:


<asp:TextBox
id="txtName"
Runat="Server"/>

<div>
<asp:RegularExpressionValidator
ControlToValidate="txtName"
Text="Invalid Code!"
ValidationExpression="[0-9]"
Runat="Server" />

<asp:RegularExpressionValidator
ControlToValidate="txtName"
Text="Invalid Email Address!"
ValidationExpression="\S+@\S+\.\S{2,3}""
Runat="Server" />
</div>

نکته مهم: در هنگام استفاده از Client-side Validation ها، نمی توانید عنصر خاصی را برای نمایش پیغام خطا تعیین کنید.
پیغام خطا در جایی که Client-side Validation قرار داده شده است، نمایش داده می شود.

titbasoft
پنج شنبه 25 فروردین 1384, 10:20 صبح
برای مشکل جا از ValidationSummary استفاده کنید و اگر خیلی مشکلتون زیاده مقدار ShowMessage اون رو به true ست کنید تا پیام ها در یک message box نشون داده بشه.

اما برای client-side validation لازمه که از CustomValidator استفاده کنید. مراحل استفاده:
1) برای آن مقدار ControlToValidate رو به کنترلی که باید validate بشه ست کنید
2) برای آن مقدار ClientValidationFunction رو مشخص کنید مثلا: ClientValidate (این نام تابعی است که سمت client نوشته خواهد شد)
3) سمت client یک تابع با همان نامی که در مرحله قبل ساختید ، با قانون مورد نظر خود بنویسید و جائی که valid بودن مشخص شد true برگردونید و در جائی که inValid بودن مشخص شد false برگردونید. این تابع 2 آرگومان دارد:
a) ارگومان source که کنترل CustomValidator شما به آن پاس داده خواهد شد
b) آرگومان arguments که خود 2 property مهم دارد
I) مشخصه arguments.Value که مقداری است که باید validate شود
II) مشخصه arguments.IsValid که valid بودن یا نبودن مقدار را معین می کند

نمونه کد:


<script language="jscript">
function ClientValidate(source, arguments)
{
for (var iCount = 2; iCount <= arguments.Value / 2; iCount++)
{
if ((arguments.Value % iCount) == 0)
{
arguments.IsValid = false;
return false;
}
}
arguments.IsValid = true;
return true;
}
</script>
<asp:TextBox id="TextBox1" runat="server"></asp:TextBox>
<asp:Button id="Button1" runat="server" Text="check"></asp:Button>
<asp:CustomValidator id="CustomValidator1" runat="server"
ErrorMessage="Is not prime" ControlToValidate="TextBox1" ClientValidationFunction="ClientValidate">
</asp:CustomValidator>
:wink:

Behrouz_Rad
پنج شنبه 25 فروردین 1384, 11:03 صبح
برای مشکل جا از ValidationSummary استفاده کنید
ValidationSummary در ترکیب با کنترل های دیگر به کار می رود. پس توفیقی در کاهش فضای اشغالی به دست نمی آید. ValidationSummary تنها در زمانی کاربرد دارد که تعداد کنترل های چک شونده زیاد باشند و بخواهیم خطای عدم تطابق را مثلا در بالای صفحه نمایش دهیم تا کاربر زودتر خطا را مشاهده کند.


برای client-side validation لازمه که از CustomValidator استفاده کنید.
CustomValidator در زمانی که مقدار چک شونده خالی باشد، فراخوانی نمی شود.
برای چک کردن مقادیر خالی حتما باید از RequiredFieldValidator استفاده کنید.

نکته مهم: در هنگام استفاده از CustomValidator، به منظور امنیت بیشتر، تابع چک شونده باید حتما در دو سمت Client و Server نوشته و تکرار شود.
موفق باشید.
:wise1:

ealireza
پنج شنبه 25 فروردین 1384, 23:27 عصر
من تو این مدت روش های زیادی رو امتحان کردم
ولی تو این فایر فاکس لعنی که اصلا هیچ استانداردی ندراه اصلا کاری به چک شدن فرم نداره :mad:
اعصاب من رو خرد کرده فرم رو ساب میت میکنه :mad: :mad:
... فایر فاکس هیچ استانداردی توش رعایت نشده (اون از CSS هاش که فقط یک روز کامل وقت آدم رو میگیره تا با استاندارد های خودش براش CSS بنویسی :evil2: ) اینم از Java و ..

من نمیدونم دیگه چیکار کنم تو IE چک میشه و Server Side هم هست
اما تو Fire Fox نه خطا رو نشون میده ساب میت کنه :evil2: (کاش اینجا قانونی نداشت کلی به سازندش فحش میدادم :evil2: )



بهروز جان اگه میشه راهنمایی کن چی کار کنم درست شه کفرم رو در آورده 24 ساعت دارم با این فرمه ور میرم :(

دستت درد نکنه :mrgreen: :موفق:

Behrouz_Rad
جمعه 26 فروردین 1384, 05:40 صبح
بله متاسفانه FireFox از استاندارهای خاصی پیروی می کنه.
کمی در اینترنت جستجو کنید + اینکه حتما از چک کردن Server -Side استفاده کنید.
الان دارم میرم دانشگاه و 5:09 صبح وگرنه می تونستم خودم واست پیدا کنم.
:)

ealireza
جمعه 26 فروردین 1384, 09:44 صبح
بهروز جان میشه در مورد چک کردن Server-Side مثلا ایمیل بگی
چطوری میشه یک ایمیل رو از لحاظ Vailed بودن چک کرد
میشه از همون پترن های RegularExpressionValidator استفاده کرد :گیج:

اگه میشه یک کد برام بزار :flower: :mrgreen:


انشاالله تو دانشگاه هم موفق باشید دوست عزیز :flower:

Behrouz_Rad
جمعه 26 فروردین 1384, 19:59 عصر
Dim objRegEx As RegEx

objRegEx = New RegEx( "\S+@\S+\.\S{2,3}" )

If objRegEx.IsMatch(TextBox1.Text) Then
Response.Write( "It's a Match!" )
End If

:wise1: