PDA

View Full Version : چک در سمت کلاینت و جلوگیری از اجرای OnClick



iekrang
دوشنبه 29 آبان 1385, 15:25 عصر
من یه Button دارم که میخواهم قبل از اینکه رویداد کلیکش اجرا بشه توی جاوااسکریپت یه سری شرطها چک بشه.برای اینکار توی کدبیهایندم اینطوری تابعی که باید اجرا بشه رو اضافه میکنم:


btnUpdate.Attributes.Add("OnClick", "save();");

مشکلم اینه:
اگه شرط برقرار نبود چطور میتونم جلوی اجرای برنامه رو بگیرم و همون کلاینت باشه.توی شرطم نوشتم
return false
ولی بی اثر بود.
ممنون میشم اگر راهنماییم کنید.

Behrouz_Rad
دوشنبه 29 آبان 1385, 16:03 عصر
درست میگی!
یک نکته ی ریز در اینجا وجود داره.
زمانی که دکمه ی تو تابعی رو فراخونی می کنه و اون تابع بنا به شرایطی که تعیین کردی، مقدار true یا false رو بر می گردونه، این مقدار برگشتی، مقدار برگشتی خود تابع است و دخالتی در تابع onsubmit فرم نداره!
اگر بخوام واضح تر توضیح بدم، باید بگم که زمانی که بر روی یک دکمه کلیک می کنی، روال onsubmit فرم اجرا میشه. در این روال می تونی با دستور return true یا return false، کنترل ارسال یا عدم ارسال فرم رو بر عهده بگیری.
زمانی که تابعی رو توسط رویداد کلیک دکمه ای فراخونی می کنی، دکمه تنها تابع رو اجرا می کنه و مقدار برگشتی تابع (true یا false) در روال onsubmit تاثیری نداره چون تنها به عنوان مقدار ساده ی برگشتی یک تابع بهش نگاه میشه.
برای اینکه بتونی این مقدار برگشتی رو به روال onsubmit فرم نسبت بدی، کافیه که قبل از نام تابع، عبارت "return" رو ذکر کنی!
در این صورت، این مقدار هست که به روال onsubmit ارسال میشه و بر روی ارسال فرم اثر میگذاره.


btnUpdate.Attributes.Add("OnClick", "return save();");

در ضمن، اگر با VS.NET 2005 کار می کنی، می تونی به جای دستور فوق، از خاصیت جدید "OnClientClick" استفاده کنی.

موفق باشید.