PDA

View Full Version : یافتن event ی که با ورود و یا پاک کردن هر کاراکتر از تکست باکس شلیک شود



majid_darab
پنج شنبه 24 تیر 1389, 07:36 صبح
با سلام و عرض خسته نباشید :
من دنبال event ی هستم که با ورود و یا پاک کردن هر کاراکتر از تکست باکس شلیک شود.
event های onkeyup یا onkeydown یا onkeypress در این باره راه گشا نبودند چون اول event شلیک می گردد و بعد کاراکتر به تکست باکس اعمال می گردد.
همین طور event آن چنج (onchange) نیز کارامد نبود چون پس از onblur شدن تکست باکس شلیک می شود.
برای مقصود بالا از چه روشی استفاده کنم ؟

با تشکر
مجید داراب

mehdi.mousavi
پنج شنبه 24 تیر 1389, 10:45 صبح
با سلام و عرض خسته نباشید :
من دنبال event ی هستم که با ورود و یا پاک کردن هر کاراکتر از تکست باکس شلیک شود.
event های onkeyup یا onkeydown یا onkeypress در این باره راه گشا نبودند چون اول event شلیک می گردد و بعد کاراکتر به تکست باکس اعمال می گردد.
همین طور event آن چنج (onchange) نیز کارامد نبود چون پس از onblur شدن تکست باکس شلیک می شود.
برای مقصود بالا از چه روشی استفاده کنم ؟

با تشکر
مجید داراب

سلام.
برای این منظور عموما KeyUp رو میگیرن، سپس با یه وقفه کوچک (با استفاده از setTimer) مقدار جدید TextBox رو با مقدار قبلی مقایسه میکنن و اگر یکی نبود، یه member method ای به اسم onValueChanged (یا هر چیز دیگه) رو Call میکنن.

به این ترتیب شما می دونید وقتی متود onValueChanged فراخوانی میشه که مقدار فعلی TextBox تغییر کرده باشه (و دیگه نیازی نیست Focus رو از دست بده). اینطوری اگر کلید Control، Alt و ... نیز زده بشه که تغییری در محتوای TextBox ایجاد نمیکنه، با اینکه KeyUp فراخوانی میشه، اما چون مقادیر فعلی و قبلی رو با هم مقایسه میکنید و تغییری صورت نگرفته، onValueChanged نیز دیگه Call نمیشه.

موفق باشید.

majid_darab
پنج شنبه 24 تیر 1389, 11:36 صبح
سلام دست شما درد نکنه
اماآیا این وقفه باعث نمیشه داد کابر ورود اطّلاعات در بیاد؟
باتشکر

mehdi.mousavi
پنج شنبه 24 تیر 1389, 12:25 عصر
سلام دست شما درد نکنه اماآیا این وقفه باعث نمیشه داد کابر ورود اطّلاعات در بیاد؟ باتشکر

سلام.
میزان این وقفه رو خودتون باید بهینه تنظیم کنید، عموما چند ده میلی ثانیه کافیه و کاربر هرگز وقفه ای حس نمیکنه (البته دقت کنید که ممکنه Text توی Textbox شما Paste بشه، یا از این جور موارد. برای این شرایط نیز باید کدتون آمادگی داشته باشه تا متود مورد نظر رو بتونه همواره درست فراخوانی کنه.

موفق باشید.