PDA

View Full Version : focus روي دكمه خاص هنگام كليك



nkhozooii
شنبه 18 آبان 1387, 12:37 عصر
من در يكسري تكست باكس دارم كه مقابل هر كدام دكمه اي قرار دارد . مي خواهم هنگام كليك روي هر تكست باكس دكمه معادل آن انتخاب شود . از سايت چند نمونه كد مشابه هم ديدم اما به دليل اينكه تكست باكس هايم در صفحه Usercontrol قرار دارند و صفحاتم master Page اي است تگ script در آن را قبول نمي كند(تگ header ندارم كه داخل آن قرار دهم) خواهشمندم جوابي را كه مناسب اين صفحات است در اختيارم قرار دهيد . با تشكر

nkhozooii
دوشنبه 20 آبان 1387, 08:40 صبح
لطفا يكي جواب بده. حداقل روش focus روي دكمه راحالا صرفنظر از صفحات كه از چه نوعي است برايش يه راهنمايي بگذاريد متشكر مي شوم.

Chris_Ronaldo
دوشنبه 20 آبان 1387, 08:58 صبح
اول سلام
دوم اینکه شما textbox هاتون کنترل های دات نت هست یا تگ های html هستن؟
اگر کنترل های دات نت هستند که می بایست از focus خود دات نت استفاده کنید و اگر html هستند باید از جاوا اسکریپت بهره بگیرید.
ضمن اینکه شما نحوه ایجاد این textbox ها را نگفته اید؟؟؟
runtime ایجاد میشن یا اینکه یک سری کنترل ثابت هستند؟

Nightbat
دوشنبه 20 آبان 1387, 10:50 صبح
اگر روی هر تکست باکس کلیک کنی و دکمه انتخاب بشه که هیچ وقت نمی تونی توی تکست باکس ها چیزی بنویسی.

nkhozooii
دوشنبه 20 آبان 1387, 12:25 عصر
نه منظورم اين است كه وقتي روي textbox مطلبي را تايپ كردم همزمان با كليك آن focus روي دكمه مربوط به آن منتقل شود كه با زدن كليد اينتر بتوانم به صفحه بعد منتقل شوم . الان من چند دكمه دارم كه با زدن اينتر يا به error بر مي خورم يا فقط به صفحه مربوط به اولين دكمه مي رود.ديگه نميدونم چه جوري بگم!!
در ضمن در پاسخ به دوست گرامي ام جناب chris_Ronaldo بايد بگم تكست باكش ها كنترل هاي دات نت هستند و به صورت ثابت روي صفحه قرار دارند.

Nightbat
دوشنبه 20 آبان 1387, 12:44 عصر
ببین دوست من، من هنوز نفهمیدم می خوای روی چی کلیک کنی، ولی چیزی که به نظرم می رسه اینه که TabIndex کنترلهاتو درست تعریف کنی و بعد از پر کردن Textbox یه tab بزنی و focus بره روی همون دکمه ای که می خوای، اگر این روش رو دوست نداری دقیق بگو رو چی می خوای کلیک کنی !

nkhozooii
دوشنبه 20 آبان 1387, 13:38 عصر
ببين من مثلا در صفحه ام يك امكان جستجو كه داراي يك تكست باكس براي وارد كردن متن است و يه دكمه با عنوان "جستجو" گذاشته ام .يك امكان ورود به سيستم هم كه داراي دو تكست باكس و دكمه با عنوان "ورود" هم هست گذاشته ام . حال وقتي در تكست باكس جستجو عبارتي را مي نويسم و اينتر را مي زنم صفحه مربوطه را مي آورد ولي وقتي در تكست باكس هاي ورود به سيستم مطلبي مي نويسم و اينتر را مي زنم صفحه error مي دهد و با اينتر دكمه كار نمي كند و من نمي دانم كه به كاربر چه جوري بفهمونم كه يا بايد كليك كند و يا از tab استفاده كند پس مجبورم كاري كنم كه هر دو دكمه با اينتر كار كنند.

mahdi_farhani
دوشنبه 20 آبان 1387, 13:50 عصر
یک تابع اسکریپت بنویس که نام تکس باکس رو بگیره ، بعد از اون طبق اون دکمه مورد نظر را با GetElementByID پیدا کن و از رویداد Click اون استفاده کن
این تابع باید در رویداد onKeyDown باشه و همچنین بررسی کلید Enter.
اگر از Case استفاده نکنی بهتره ، سعی کن یکجوری کد بنویسی که برای تمام کلید ها بهت جواب بده ، و اگر زمانی تکست باکسی رو اضافی کردی نخواهی این تابع رو تغییر بدی

Nightbat
دوشنبه 20 آبان 1387, 14:00 عصر
ببين من مثلا در صفحه ام يك امكان جستجو كه داراي يك تكست باكس براي وارد كردن متن است و يه دكمه با عنوان "جستجو" گذاشته ام .يك امكان ورود به سيستم هم كه داراي دو تكست باكس و دكمه با عنوان "ورود" هم هست گذاشته ام . حال وقتي در تكست باكس جستجو عبارتي را مي نويسم و اينتر را مي زنم صفحه مربوطه را مي آورد ولي وقتي در تكست باكس هاي ورود به سيستم مطلبي مي نويسم و اينتر را مي زنم صفحه error مي دهد و با اينتر دكمه كار نمي كند و من نمي دانم كه به كاربر چه جوري بفهمونم كه يا بايد كليك كند و يا از tab استفاده كند پس مجبورم كاري كنم كه هر دو دكمه با اينتر كار كنند.

خداییش تو این توضیحت از کلیک خبری نبود. ولی به هر حال اگه تو نوشتن کد این روشی که مهدی گفت مشکل داشتی بگو کمکت کنیم.

nkhozooii
دوشنبه 20 آبان 1387, 15:40 عصر
جناب mahdi_farhani از راهنمايي شما ممنونم. مشكل اينجاست كه در اين حالت كه بايد از تگ script استفاده كنم چون صفحه usercontrolاي است و صفحه اي كه UC در آن قرار مي گيرد هم از نوع MasterPage اي است اين تگ را قبول نمي كنند.( چون تگ Head ندارند كه داخل آن قرار دهم. هر جاي ديگه هم مي گذارم error مي ده.) يه مشكل ديگه هم اينكه من با javascript زياد كار نكرده ام و در اين مورد خيلي تازه كارم.جستجو كردم يه سري نمونه كد پيدا كرده ام كه سعي مي كنم ازشون سر در بيارم. اگرشما هم راهنمايي كنيد ممنون مي شوم.

mahdi_farhani
دوشنبه 20 آبان 1387, 16:54 عصر
جناب mahdi_farhani از راهنمايي شما ممنونم. مشكل اينجاست كه در اين حالت كه بايد از تگ script استفاده كنم چون صفحه usercontrolاي است و صفحه اي كه UC در آن قرار مي گيرد هم از نوع MasterPage اي است اين تگ را قبول نمي كنند.( چون تگ Head ندارند كه داخل آن قرار دهم.
خوب درسته که شما در حالت دیزاین تگ Head ندارید ولی هنگام اجرای برنامه تگ Head تولید میشه .
پس شما هم هنگام اجرا برنامه میتونی اسکریپت رو اضافه کنی .


HtmlGenericControl Header = new HtmlGenericControl("script");
Header.Attributes.Add("type", "text/javascript");
Header.Attributes.Add("src", ResolveUrl("~/Scripts/Validator.js"));
this.Page.Header.Controls.Add(Header);

یه نمونه برای اضافه کردن اسکریپت داخل تگ Head در زمان اجرا هست . این کد در رویداد Page_Load مستر پیج برنامه قرار دارد . در ضمن چون از دستور ResolveUrl استفاده شده اگر فایلهای Aspx شما در فولدر های مختلف باشه ، مسیر به درستی ایجاد میشه .
شما اگر تحلیلتون و الگریتمون درست باشه ، به راحتی میتونید کدشو بنویسید ، چون اسکریپت ها به زبان های برنامه نویسی فعلی شما خیلی نزیدیک هستند ( اگر از VB استفاده میکنید میتونید اسکریپت VB بنویسی و اگر هم #C کار میکنی میتونی Javascript بنویسی ، در اینجا یکسری دستورات هم مشترک هست که با یک مقدار مطالعه میتونی اونها رو سریع یاد بگیری و کارت رو انجام بدی . )
برای کد فوق میتونی از این تابع ایده بگیری ، البته این تابع شاید اصلاً جواب نده ، چون فقط میخواهم شمای کلی باید دستت


function FindBtn(var txtName)
{
var e=Document.GetElementByID(txtName);
if (e)
e.click()
}

به همین سادگی .
موفق و پیروز باشید

nkhozooii
سه شنبه 21 آبان 1387, 16:13 عصر
با تشكر بسيار از شما .
من اسكريپتم را داخل يك فايل js قرار ميدهم و با استفاده از همان كدي كه براي pageload نوشته ايد فراخواني مي كنم. فقط در مورد بررسي enter در كجا بايد انجام شود . در داخل اسكريپت و يا هنگامي كه
رويداد onKeyDown را مي نويسم؟ و اصلا نمي دانم چه جوري بايد بررسي كنم؟؟؟

explod_javad
سه شنبه 21 آبان 1387, 23:26 عصر
سلام به همه دوستان
برای اضافه کردن اسکریپت به هدر یه نگاهی به این صفحه بندازید به درد میخوره.
http://www.30sharp.com/ShowArticle.aspx?nid=2&did=145&AuthorID=1