ورود

View Full Version : چگونه یک textbox عددی ایجاد کنیم



mohsen_zelzela00
چهارشنبه 19 اسفند 1388, 20:57 عصر
با سلام

من در صفحه WEB خودم یک فیلد دارم که کاربر فقط باید یک مقدار عددی در آن وارد کند آیا میشه یک همچین کنترلی را با استفاده از asp.net و c# نوشت (از نظر شدن مطمن هستم که شدنی هست)

(اگه کدهاش به زبان javascript باشه نگران این هستم که کاربر درون مرورگر خودش javascript رو غیر فعال کرده و بتونه اونو دور بزنه)

ممنون میشم دوستان راهنمایی کنند

Peyman.Gh
چهارشنبه 19 اسفند 1388, 21:10 عصر
با استفاده Validation ها میتونید لزوماً نباید که فقط عدد تایپ شود هدف دریافت ورودی عددی میباشد و تا زمانی که کاربر عدد وارد نکند عملی صورت نمیگیرد.

Milad Mohseny
چهارشنبه 19 اسفند 1388, 22:01 عصر
<asp:TextBox id="txtNumber" Runat="server" />
<asp:RegularExpressionValidator ID="vldNumber" ControlToValidate="txtNumber" Display="Dynamic" ErrorMessage="Not a number" ValidationExpression="(^([0-9]*|\d*\d{1}?\d*)$)" Runat="server">
</asp:RegularExpressionValidator>

در ضمن:
http://forums.ASP.NET/t/1158501.aspx
The ASP.NET Validator controls will perform it's validation both in JavaScript on the client, and on the server

mohsen_zelzela00
چهارشنبه 19 اسفند 1388, 22:03 عصر
با استفاده Validation ها میتونید لزوماً نباید که فقط عدد تایپ شود هدف دریافت ورودی عددی میباشد و تا زمانی که کاربر عدد وارد نکند عملی صورت نمیگیرد.


دوست عزبز یعنی این ممکن نیست که ما یک textbox درست کنیم که فقط عدد بگیرد کاری که خیلی از سایت ها دارن انجام میدن

Milad Mohseny
چهارشنبه 19 اسفند 1388, 22:17 عصر
دوست عزبز یعنی این ممکن نیست که ما یک textbox درست کنیم که فقط عدد بگیرد کاری که خیلی از سایت ها دارن انجام میدن
چرا ولي RegularExpressionValidator رو هم براي رفع همون مشكلي كه خودت گفتي بايد اعمال كني.
اين تابع javascript
function isNum(e) {
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
if (keycode > 31 && (keycode < 48 || keycode > 57))
return false;
return true;
}
اينم نمونه استفاده ازش
<asp:TextBox ID="txt" runat="server" onkeypress="return isNum(event);"></asp:TextBox>

mohsen_zelzela00
چهارشنبه 19 اسفند 1388, 22:28 عصر
چرا ولي RegularExpressionValidator رو هم براي رفع همون مشكلي كه خودت گفتي بايد اعمال كني.
اين تابع javascript
function isNum(e) {
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
if (keycode > 31 && (keycode < 48 || keycode > 57))
return false;
return true;
}
اينم نمونه استفاده ازش
<asp:TextBox ID="txt" runat="server" onkeypress="return isNum(event);"></asp:TextBox>
عالی بود دوست عزیز جواب داد

فقط میشه در مورد این کدی که نوشتید یه توضیحی بدید ؟؟؟؟
ممنون

* joodi *
چهارشنبه 19 اسفند 1388, 22:32 عصر
سلام

از کنترل RangeValidator می تونید استفاده کنید در قسمت properties این کنترل ، type را برابر Integer قرار دهید و minimum value و maximum value را مشخص کنید .

موفق باشید

Milad Mohseny
چهارشنبه 19 اسفند 1388, 22:51 عصر
فقط میشه در مورد این کدی که نوشتید یه توضیحی بدید ؟؟؟؟
كدوم قسمت رو توضيح بدم؟


از کنترل RangeValidator می تونید استفاده کنید در قسمت properties این کنترل ، type را برابر Integer قرار دهید و minimum value و maximum value را مشخص کنید .
اگه قرار باشه تو يه txt مثلاً شماره خاصي مثل 001235478901234567899876543210123456789 رو وارد كنيم به نظرت اين روش جواب ميده ؟ يا من درست متوجه نشدم؟

* joodi *
پنج شنبه 20 اسفند 1388, 09:16 صبح
سلام

من از اين روش براي گرفتن يك تعداد كاراكتر مشخص استفاده كردم و جواب داد مثلا براي گرفتن شماره تلفن بايد از 0 تا 9999999 minimum value و maximum value را مقدار داد .
اين روش براي گرفتن اعداد با تعداد كاراكتر مشخص خوبه و البته نميدونم براي صفر اولش راهي وجود داره يا نه؟:لبخند:

Himalaya
پنج شنبه 20 اسفند 1388, 10:20 صبح
function isNum(e)
{
var keycode;
if (window.event)
keycode = window.event.keyCode;
else if (e) keycode = e.which;
if (keycode > 31 && (keycode < 48 || keycode > 57))
return false;
return true;
}

با این روش اگه طرف مثلا a1c234pfr رو کپی پیس کرد اونوقت همه چی بهم میریزه
(منظورم اینه که اینطوری کاراکترهایی غیر از اعداد هم میتونن وارد تکست باکس بشن)

mohsen_zelzela00
پنج شنبه 20 اسفند 1388, 10:47 صبح
javascript
function isNum(e) {
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
if (keycode > 31 && (keycode < 48 || keycode > 57))
return false;
return true;
}

<asp:TextBox ID="txt" runat="server" onkeypress="return isNum(event);"></asp:TextBox>

خود تابع دقیقاً داره چه عملیاتی رو انجام بده من فقط خط آخر اون رو متوجه شدم و وقتی که تابع رو فراخوانی می کنیم پارامتر event که براش پاس می دیم چی هست

ممنون

mohsen_zelzela00
پنج شنبه 20 اسفند 1388, 10:52 صبح
function isNum(e)
{
var keycode;
if (window.event)
keycode = window.event.keyCode;
elseif (e) keycode = e.which;
if (keycode > 31 && (keycode < 48 || keycode > 57))
returnfalse;
returntrue;
}
با این روش اگه طرف مثلا a1c234pfr رو کپی پیس کرد اونوقت همه چی بهم میریزه
(منظورم اینه که اینطوری کاراکترهایی غیر از اعداد هم میتونن وارد تکست باکس بشن)

دوست عزیز ما برای اینکه کاربر نتونه کاراکتر غیر عددی مستقیم در textbox وارد کند از این کد استفاده می کنیم ولی اگه کاربری بخواد از عملیات Copy و Paste استفاده کند میتونیم وقتی که یک دکمه رو فشار داد با استفاده از RegularExpressionValidator داده وارده شده توسط کاربر رو چک کنیم

yekta64
پنج شنبه 20 اسفند 1388, 14:05 عصر
چرا ولي RegularExpressionValidator رو هم براي رفع همون مشكلي كه خودت گفتي بايد اعمال كني.
اين تابع javascript
function isNum(e) {
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
if (keycode > 31 && (keycode < 48 || keycode > 57))
return false;
return true;
}
اينم نمونه استفاده ازش
<asp:TextBox ID="txt" runat="server" onkeypress="return isNum(event);"></asp:TextBox>


مرسي دوست عزيز اگه بخوايم textbox ما فقط حروف بگيره چطور؟؟؟؟

Milad Mohseny
پنج شنبه 20 اسفند 1388, 14:07 عصر
با این روش اگه طرف مثلا a1c234pfr رو کپی پیس کرد اونوقت همه چی بهم میریزه
(منظورم اینه که اینطوری کاراکترهایی غیر از اعداد هم میتونن وارد تکست باکس بشن)
براي رفع اين مشكل ميتوني در مورد كنترل clipboard در javascript سرچ كني و اون تابع رو كامل تر كني.
http://www.geekpedia.com/tutorial126_Clipboard-cut-copy-and-paste-with-JavaScript.html
http://lab.artlung.com/copy-to-clipboard-javascript/

yekta64
پنج شنبه 20 اسفند 1388, 14:11 عصر
دوستان كد رو چطور تغيير بديم كه فقط مجاز به وارد كردن حروف باشيم؟؟؟؟؟؟؟؟؟؟؟؟؟؟/
مرسي

Peyman.Gh
پنج شنبه 20 اسفند 1388, 14:42 عصر
ولی من تا جایی که دیدم این کار را انجام نمیدهند و از Validation ها استفاده میکنند چون این تابع جاوا اسکریپت با Copy Paste دور میخوره.

Milad Mohseny
پنج شنبه 20 اسفند 1388, 19:16 عصر
ولی من تا جایی که دیدم این کار را انجام نمیدهند و از Validation ها استفاده میکنند چون این تابع جاوا اسکریپت با Copy Paste دور میخوره.

پاسخ در پست 14 داده شده. :خجالت:

براي رفع اين مشكل ميتوني در مورد كنترل clipboard در javascript سرچ كني و اون تابع رو كامل تر كني.
http://www.geekpedia.com/tutorial126_Clipboard-cut-copy-and-paste-with-JavaScript.html
http://lab.artlung.com/copy-to-clipboard-javascript/

Peyman.Gh
پنج شنبه 20 اسفند 1388, 19:20 عصر
پاسخ در پست 14 داده شده. :خجالت:

میلاد جان منو تو درگیر میشیم آخرش باهم :لبخند:


اگه قرار باشه تو يه txt مثلاً شماره خاصي مثل 001235478901234567899876543210123456789 رو وارد كنيم به نظرت اين روش جواب ميده ؟ خوب اگر یک بازه ی عددی معمولی و نرمال باشه Validation ها مناسب هستند.

البته از AJAX هم میتونید استفاده کنید.

http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/FilteredTextBox/FilteredTextBox.aspx

Milad Mohseny
پنج شنبه 20 اسفند 1388, 19:53 عصر
میلاد جان منو تو درگیر میشیم آخرش باهم
اختيار داري دوست خوبم. چرا درگير ما داريم از همديگه چيز ياد ميگيريم. :قلب:


خوب اگر یک بازه ی عددی معمولی و نرمال باشه Validation ها مناسب هستند.
من RangeValidator رو پيشنهاد ندادم و گفتم مشكل داره با اين روش. من ValidationExpression رو پيشنهاد دادم (پست 3) كه ديگه مشكلي رو هم نداره:
http://www.barnamenevis.org/forum/showthread.php?t=209599
پست 3 رو ببين

Himalaya
پنج شنبه 20 اسفند 1388, 22:16 عصر
با این روش اگه طرف مثلا a1c234pfr رو کپی پیس کرد اونوقت همه چی بهم میریزه
(منظورم اینه که اینطوری کاراکترهایی غیر از اعداد هم میتونن وارد تکست باکس بشن)




براي رفع اين مشكل ميتوني در مورد كنترل clipboard در javascript سرچ كني و اون تابع رو كامل تر كني

نه منظور من از این حرف این نیست که من در این مورد مشکل دارم ... منظورم اینه که اگه یه روش رو پیشنهاد میکنید معایبش رو هم بگید... شاید اون کسی که راهنمایی خواسته تا دید با زدن حروف اون کاراکترها وارد تکست باکس نمیشن فکر کنه که همه چیز حل شده دیگه خبر نداره که ...........

Milad Mohseny
پنج شنبه 20 اسفند 1388, 22:33 عصر
نه منظور من از این حرف این نیست که من در این مورد مشکل دارم ... منظورم اینه که اگه یه روش رو پیشنهاد میکنید معایبش رو هم بگید... شاید اون کسی که راهنمایی خواسته تا دید با زدن حروف اون کاراکترها وارد تکست باکس نمیشن فکر کنه که همه چیز حل شده دیگه خبر نداره که
درسته دوست من ولي اگه كامل پست هاي قبلي من رو بخوني ميبيني گفتم اون تابع در كنار ValidationExpression كه تو پست 3 قراردادم استفاده بشه كه ديگه در اينصورت مشكلي كه شما فرمودي نميتونه براش مشكلي رو بوجود بياره. درسته؟
در ضمن اون روش يه مثال بود و قرار نيست اينجا ما ماهي بديم ما فقط ايده و روش كار رو ميگيم و دوستان بايد خودشون هم مثل شما خلاقيت به خرج بدن و كار رو براي خودشون تكميل كنند و از زواياي مختلف بررسي كنند و اگه نتيجه كارشون رو هم به صورت ايده نكته و ... در اختيار ديگران قرار بدهند كه ديگه چه بهتر و اين ميشه رسالت سايت برنامه نويس. :چشمک:

yekta64
جمعه 21 اسفند 1388, 20:34 عصر
سلام
دوستان توی این کد از کد های اسکی اعداد استفاده شده پس برای تغییر این کد به حالتی که فقط حروف اجازه درج داشته باشند باید از کد اسکی حروف استفاده بشه کسی می دونه کد اسکی حروف چی هستن یا اینکه این کد رو به چه صورت تغییر بدیم تا بتونیم فقط اجازه ی درج حروف رو بدیم؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟//مرسی

Peyman.Gh
جمعه 21 اسفند 1388, 20:58 عصر
دوستان AJAX مساله را خیلی راحت کرده !

http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/FilteredTextBox/FilteredTextBox.aspx

Peyman.Gh
جمعه 21 اسفند 1388, 21:10 عصر
سلام
دوستان توی این کد از کد های اسکی اعداد استفاده شده پس برای تغییر این کد به حالتی که فقط حروف اجازه درج داشته باشند باید از کد اسکی حروف استفاده بشه کسی می دونه کد اسکی حروف چی هستن یا اینکه این کد رو به چه صورت تغییر بدیم تا بتونیم فقط اجازه ی درج حروف رو بدیم؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟//مرسی


function isNum(e) {
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
if ( (keycode < 65 || keycode > 90))
if((keycode<97 || keycode>122))
return false;
return true;
}
<asp:TextBox ID="txt" runat="server" onkeypress="return isNum(event);"></asp:TextBox>موفق باشید.

کد اسکی :
A=65 ... Z=90
a=97 ... z=122

موفق باشید.

Milad Mohseny
جمعه 21 اسفند 1388, 21:25 عصر
در تكميل پاسخ دوستمون اگه اين خط پايين رو استفاده كني فقط حروف فارسي رو قبول ميكنه:
if ((keycode < 1574 || keycode > 1711))

yekta64
شنبه 22 اسفند 1388, 09:07 صبح
در تكميل پاسخ دوستمون اگه اين خط پايين رو استفاده كني فقط حروف فارسي رو قبول ميكنه:
if ((keycode < 1574 || keycode > 1711))

سلام
مرسي دوست عزيز
من اين كد رو اعمال كردم يه سوال چرا وقتي كاربر يه داده رو به صورت صحيح در textbox وارد مي كنه امكان اين رو نداره كه با backspase سيستم چيزي رو پاك كنه
مثلا اگه نوشته باشه
سلان بخوان ن رو حذف كنه و بنويسه سلام اين امكان رو نداره
چرا؟؟؟؟؟؟//
مرسي

البته دوست عزيز چيزي كه گفتم فقط در مرود حروف فارسي هستش

yekta64
شنبه 22 اسفند 1388, 09:19 صبح
دوست عزيز يه نكته اينكه اين كد در مرورگر IE هيچ مشكلي نداره ولي در فاير فاكس به مشكلي كه براتون توضيح دادم برخورد مي كنيم چرا؟؟؟؟؟؟؟؟؟؟؟؟؟//

Peyman.Gh
شنبه 22 اسفند 1388, 10:21 صبح
فاصله هم نمیشه داد حتی اگر کادر متنی مولتی لاین هم باشه نمیشه به خط بعدی رفت زیرا
کد اسکی Enter = 13 , Space =32 , BackSpace=8 پس در کد هایی که قرار داده ایم جایی ندارند.

موفق باشید.

Peyman.Gh
شنبه 22 اسفند 1388, 10:33 صبح
تابع به این صورت امکان پاک کردن فاصله دادن و رفت به خط بعدی را ایجاد میکند

برای حروف انگلیسی :

function isNum(e) {
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
if ((keycode < 65 || keycode > 90))
if((keycode<13 ||keycode>13))
if((keycode<32 || keycode >32))
if((keycode<8 || keycode>8))
if((keycode<97 || keycode>122))
return false;
return true;
}

برای حروف فارسی :


function isNum(e) {
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
if((keycode<13 ||keycode>13))
if((keycode<32 || keycode >32))
if((keycode<8 || keycode>8))
if ((keycode < 1574 || keycode > 1711))
return false;
return true;
}

موفق باشید.

yekta64
شنبه 22 اسفند 1388, 10:33 صبح
فاصله هم نمیشه داد حتی اگر کادر متنی مولتی لاین هم باشه نمیشه به خط بعدی رفت زیرا
کد اسکی Enter = 13 , Space =32 , BackSpace=8 پس در کد هایی که قرار داده ایم جایی ندارند.

موفق باشید.


مرسي دوست عزيز
ولي همين كدي كه نوشتيد در مرورگر IE هيچ مشكلي نداره و به راحتي ميشه از BackSpace استفاده كرد و اگه حرفي رو اشتباه وارد كرد اصلاحش كرد منتهي در فايرفاكس جواب نميده

Peyman.Gh
شنبه 22 اسفند 1388, 10:55 صبح
پست شماره 29 ؟

yekta64
شنبه 22 اسفند 1388, 11:15 صبح
پست شماره 29 ؟

مرسي
دوست من سوال من اينه كه اگه مشكل از كد هستش و بايد اين طور كه شما گفتيد اون رو تغيير داد پس چرا با ie كد قبل هيچ مشكلي نداره و به راحتي اجرا ميشه؟؟؟؟؟؟؟؟
چرا جاوا با بعضي مرورگرها مشكل داره؟؟؟؟؟؟

yekta64
شنبه 22 اسفند 1388, 11:35 صبح
دوست عزيز كد اسكي tab چي هستش؟؟؟؟؟

yekta64
شنبه 22 اسفند 1388, 11:38 صبح
دوست عزيز اگه بخوام وقتي كاربر يه چيزي رو وارد كرد كليد tab رو زد بره به textbox بعدي بايد چكار كنم؟؟؟؟

Peyman.Gh
شنبه 22 اسفند 1388, 11:44 صبح
کد اسکی Tab=9 میباشد.
شما وقتی در طراحی کادر متنی ها به ترتیب پشت سر هم قرار دهید با تب کاربر به کادر متنی بعدی میرود.

yekta64
شنبه 22 اسفند 1388, 11:45 صبح
دوست من مشكل tab باز هم توي IE وجودنداره ولي توي فيار فاكس وجود داره
آخه چرا؟؟؟؟؟

yekta64
شنبه 22 اسفند 1388, 13:10 عصر
کد اسکی Tab=9 میباشد.
شما وقتی در طراحی کادر متنی ها به ترتیب پشت سر هم قرار دهید با تب کاربر به کادر متنی بعدی میرود.

دوست عزيز
من كنترل ها رو به ترتيب گذاشتم وقتي اين كد رو اعمال نكنم مشكلي نداره tab عمل مي كنه ولي وقتي كد رو اعمال مي كنم tab عمل نميكنه البته فقط در فايرفاكس به اين صورت هستش به نظر شما اين امكان وجود داره كه كد رو طوري تغيير داد كه tab هم عمل بكنه؟؟؟؟؟؟/
مرسي

Milad Mohseny
شنبه 22 اسفند 1388, 22:05 عصر
اميدوارم اين آموزش راضي كننده باشه:
http://www.barnamenevis.org/forum/showthread.php?t=210155

yekta64
یک شنبه 23 اسفند 1388, 09:13 صبح
اميدوارم اين آموزش راضي كننده باشه:
http://www.barnamenevis.org/forum/showthread.php?t=210155

سلام
مرسي دوست عزيز مشكل حل شد.
شما مي دونيد چرا بعضي كدهاي جاوا توي بعضي مرورگرها جواب نمي ده؟؟؟؟؟

Milad Mohseny
یک شنبه 23 اسفند 1388, 14:07 عصر
شما مي دونيد چرا بعضي كدهاي جاوا توي بعضي مرورگرها جواب نمي ده؟؟؟؟؟
مثلاً چه كدي ميتوني مثال بزني. firefox كاملاً استاندارده.

yekta64
دوشنبه 24 اسفند 1388, 08:30 صبح
مثلاً چه كدي ميتوني مثال بزني. firefox كاملاً استاندارده.

خوب ببينيد بعضي از كدها توي فاير فاكس جواب مي ده و در IE بخصوص IE8 جواب نمي ده و بعضي ديگه برعكس
بر فرض توي همين تاپيك قبل از كد نهايي شما كدهاي كه ارائه شده بود رو من در هر دو مرورگر اجرا كردم قبل از اعمال Tab و backSpace در كد اين كد در مرورگرIE8 به راحتي اجرا مي شد و من ميتونستم با backspace حروف رو پاك كنم اما در فاير فاكس اين امكان رو نداشتن و همچنين در مورد tab
شايد شما بگيد مشكل از كد بوده ولي به نظر من اين طور نبوده چون همون كد در IE8 بدونه مشكل جواب مي داد و در نهايت كد نهايي شما با هر دو مرورگر سازگار شد
علت اين ناسازگاري چي بود؟؟؟

paladin
جمعه 06 فروردین 1389, 17:12 عصر
دوستان اینم یه نمونه از text boxt اعداد :

vba_hadi
دوشنبه 29 شهریور 1389, 14:26 عصر
سلام دوستان
یه مشکل واسه تکست باکس عددی دارم.
از مدهای زیر استفاده کردم:


<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="cc1" %>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<cc1:MaskedEditExtender ID="TextBox1_MaskedEditExtender" runat="server" MaskType="Number" Mask="99999999" Enabled="True" TargetControlID="TextBox1" />

ولی بعد از اجرا حروف رو هم قبول میکنه. مشکل چیه؟