PDA

View Full Version : مشگل در تایپ فقط عدد در textbox



ali_mnkt
سه شنبه 06 بهمن 1388, 12:48 عصر
سلام به همه

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

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

یه جستجویی تو سایت زدم و بالاخره به این نتیجه رسیدم که از input(text به جای textbox

استفاده کنم ( تا بتونم از رویداد onkeypress بتونم استفاده کنم) و کد هایی رو هم پیدا کردم

که شامل یک کد جاوا نیز هست.


کد جاوا :




<script language="Javascript" type="text/javascript">
function EnsureNumeric()
{
var key = window.event.keyCode;
if (key <48 || key >57)
window.event.returnValue = false;
}
</script>


و تغییری که باید در تگ مربوط به input(text انجام بدم :


<input id="Text1" type="text" runat="server" onkeypress="EnsureNumeric()" />

اما انجام نمی شه و مثل معمول هم عدد می گیره و هم حروف.

آیا این کد اشتباهه ؟ و یا اگر درسته مشگل کجاست.

من برنامه مربوط به اون رو هم اینجا میذارم

mohsen_zelzela00
سه شنبه 06 بهمن 1388, 14:07 عصر
دوست عزیز می تونید به آدرس زیر مراجعه کنید

http://barnamenevis.org/forum/showthread.php?t=197889

ali_mnkt
سه شنبه 06 بهمن 1388, 19:00 عصر
مرسی دوست عزیز از راهنماییت ولی من هم باز مشگل شما رو دارم یعنی این مد ها فقط

در IE جواب می دن و در مثلا FireFox درست عمل نمی کنن. در اون لینکی که گذاشته بودید

یکی از دوستان دیگه یک راه دیگه ای رو پیشنهاد کرده بودن که با onkeyup نوشته شده بود

من اون کد رو عینا در برنامه خودم کپی کردم و اجرا گرفتم ولی اصلا نه در IE و نه در Fire Fox

اجرا نمی شد. شما برای حل این مشگل چه کاری انجام دادین ؟

Alireza_Salehi
سه شنبه 06 بهمن 1388, 20:52 عصر
یک تابع جاوا اسکریپت ساده که در همه مرورگرها جواب میده:

function isNumberKey(evt) {
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}

کافیه اینطوری استفاده کنید:

<asp:TextBox ID="TextBox1" runat="server" onfocus="select();" onkeypress="return isNumberKey(event)"></asp:TextBox>

این فقط اجازه وارد کردن عدد میده...

اگر ترکیب پیچیده تری لازم داری میتونی از FilteredTextboxExtender استفاده کنی.

ali_mnkt
سه شنبه 06 بهمن 1388, 23:20 عصر
یک تابع جاوا اسکریپت ساده که در همه مرورگرها جواب میده:

function isNumberKey(evt) {
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}کافیه اینطوری استفاده کنید:

<asp:TextBox ID="TextBox1" runat="server" onfocus="select();" onkeypress="return isNumberKey(event)"></asp:TextBox>این فقط اجازه وارد کردن عدد میده...

اگر ترکیب پیچیده تری لازم داری میتونی از FilteredTextboxExtender استفاده کنی.

دوست عزیز قبل از این که این کد رو امتحان کنم یه سوال دارم. textbox رویدادی به نام

onkeypress که نداره پس چطوری این رویداد رو در مشخصات مربوط به textbox نوشتین ؟

و آیا باید این رویداد رو به textbox اضافه کنیم ؟ ولی تو input(text این رویداد onkeypress وجود داره آیا می شه از اون به جای textbox استفاده کرد ؟

Alireza_Salehi
چهارشنبه 07 بهمن 1388, 00:08 صبح
در نهایت TextBox به یک input تبدیل می شود، ویژوال استودیو رویداد ها و خواص مربوط به HTML را لیست نمی کند ولی می توانید از آنها در کدهای خودتان استفاده کنید، به شرطی که دقت کنید اشتباه تایپی نداشته باشید.
این مسئله تقریبا عمومیت داره (با چند تا استثنا)، مثلا اگر دقت کرده باشید کنترل ها خاصیت style ندارند ولی اگر به کنترلی خاصیت style بدید و درونش inline css بنویسید کاملا کار میکنه.
این به این خاطره که هم چیز در نهایت HTML و Javascript خواهد بود و نه چیز دیگر.
در مثالی که گذاشتم رویداد دیگری هم برای انتخاب کل متن استفاده شده است.

می توانید به input هم اضافه کنید فرقی ندارد.

ali_mnkt
چهارشنبه 07 بهمن 1388, 00:30 صبح
در نهایت TextBox به یک input تبدیل می شود، ویژوال استودیو رویداد ها و خواص مربوط به HTML را لیست نمی کند ولی می توانید از آنها در کدهای خودتان استفاده کنید، به شرطی که دقت کنید اشتباه تایپی نداشته باشید.
این مسئله تقریبا عمومیت داره (با چند تا استثنا)، مثلا اگر دقت کرده باشید کنترل ها خاصیت style ندارند ولی اگر به کنترلی خاصیت style بدید و درونش inline css بنویسید کاملا کار میکنه.
این به این خاطره که هم چیز در نهایت HTML و Javascript خواهد بود و نه چیز دیگر.
در مثالی که گذاشتم رویداد دیگری هم برای انتخاب کل متن استفاده شده است.

می توانید به input هم اضافه کنید فرقی ندارد.

آقا دمت گرم خیلی لطف کردی (درست کار کرد ) امروز از صبح دنبال همچین کدی بودم که با

browser های مختلف سازگار باشه البته هرچی پیدا می کردم یه ایرادی داشت . دیگه تقریبا

نا امید شده بودم که شما این لطف بزرگ رو کردی :بوس:

پس در نهایت نظر شما اینه که چه از textbox استفاده کنم و چه از input هیچ فرقی با هم

نداره ؟

البته من یه نظری دارم ببینید درسته :

چون textbox یه کنترل server_side هست با هر تغییر در اون ( مثلا اگه از رویداد onkeydowe)

تغییرات به سرور منتقل می شه و بر حسب کد هایی که پشت اون رویداد نوشتیم پردازش

در سرور انجام می شه ولی input که یک کنترل client_side هست کلیه پردازش های اولیه

در client انجام می شه و نتیجه نهایی به server منتقل می شه.

البته این برداشته منه نمی دونم درست باشه یا نه. نظر شما چیه ؟

Alireza_Salehi
چهارشنبه 07 بهمن 1388, 00:42 صبح
برداشتتون غلطه، چون:
تا زمانی که PostBack انجام نشود چیزی به سرور نمی رود،

نکته : رویداد های سمت کلاینت موجب ایجاد PostBack نمی شوند، بنابراین رویدادهایی که در کنترل های ASP.NET نیست و رویدادهایی که با OnClient شروع می شوند موجب PostBack نمی شوند.

کنترل های ASP.NET دو نوع رویداد دارند سمت سرور و سمت کلاینت.

ali_mnkt
پنج شنبه 08 بهمن 1388, 12:06 عصر
برداشتتون غلطه، چون:
تا زمانی که PostBack انجام نشود چیزی به سرور نمی رود،

نکته : رویداد های سمت کلاینت موجب ایجاد PostBack نمی شوند، بنابراین رویدادهایی که در کنترل های ASP.NET نیست و رویدادهایی که با OnClient شروع می شوند موجب PostBack نمی شوند.

کنترل های ASP.NET دو نوع رویداد دارند سمت سرور و سمت کلاینت.

دوست عزیز آیا کدی هم که بشه فقط حروف به اضافه ی space وارد کرد سراغ داری ؟