PDA

View Full Version : چطوری باید رویداد OnClick برای Image نوشت



nasr
سه شنبه 06 مرداد 1388, 14:25 عصر
سلام
من Asp بلد نیستم

می خوام بدونم چطور می تونم رویداد OnClick برای یک عکس نوشت ؟

می خوام وقتی روی عکس کلیک شد یک سری اطلاعات وارد دیتابس کنم

ممنون

silverfox
سه شنبه 06 مرداد 1388, 15:44 عصر
یه تگ a بذار دور عکس رو کلیک اون کد بنویس!

nasr
سه شنبه 06 مرداد 1388, 16:20 عصر
سلام
میشه یه نمونه برای من مثال بزنید

این کد عکس من :

<p>
<asp:Image ID="Image1" runat="server" Height="36px"
ImageUrl="http://www.google.com/intl/en_ALL/images/logo.gif" Width="193px" />
</p>


میشه برام همین کار را بمنید

ممنون

panahpouri
چهارشنبه 07 مرداد 1388, 15:44 عصر
با سلام
يك span بزار دور img و روي onclick ان كد بزن

<SPAN style="CURSOR: hand" onclick="fun()" ><asp:Image ID="Image1" runat="server" Height="36px"
ImageUrl="http://www.google.com/intl/en_ALL/images/logo.gif" Width="193px" /></SPAN>

nasr
سه شنبه 13 مرداد 1388, 13:58 عصر
من متوجه نشدم

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


ممنون

behnam-s
سه شنبه 13 مرداد 1388, 14:42 عصر
به جای Image از ImageButton استفاده کن .
مثل button می تونی براش OnClick بسازی

nasr
سه شنبه 13 مرداد 1388, 16:23 عصر
سلام

من مثال زدم برای Image ولی کلا می خوام بدونم برای اشیاء چطوری میشه OnClick تعریف کرد

ممنون

WorldVbMan
سه شنبه 13 مرداد 1388, 18:18 عصر
با سلام
اگه منظور Asp.net هست خب قضیه از این قراره:
اشیاء Html که ذاتاً می تونن دارای رویداد onclick باشند :

<img src='...' onclick="funcName()" />
اینم تعریف تابع:

function funcName(){alert('this is a function calling')}
البته همونطور که مشخصه تابعی که صداش می کنند یه تابع سمت کلاینته مثلاً جاوااسکریپت
یعنی باید تابع مذکور رو توی تگ ذیل تعریف کرد:

<script type="text/javascript"></script>
بعبارتی:

<script type="text/javascript">
function funcName(){alert('this is a function calling')}
</script>
ولی اشیاء سمت سرور یعنی هر المانی که براش Attribute یا همون مشخصه ی runat=server تعریف شده ، کلیکشون در سمت سرور پاسخ داده میشه، البته اگر داشته باشند
برای فهمیدن این میشه براشون id گذاشت و سپس اگه تو محیط Designer که فرم وب طراحی میشه راست کلیک کنید و بزنید View Designer و سپس برید تو قسمت کدینگ ، میشه این المان های سمت سرور رو از قسمت ClassName در کومبوی بالای ویراستار انتخاب کرد و سپس از کومبوی کناریش یعنی MethodName هم رویدادهاشون رو برگزید که می تونه رویداد کلیک داشته باشه یا نه
برای اشیاء سمت کلاینت اگه بخواهیم رویدادهای سمت سرور رو صدا کنیم تا بشه برای هر المانی از کلیک استفاده کرد راهش استفاده از Ajax و یا رابط ICallBackEventHandler هست که خودش ذاتاً از همون Ajax استفاده می کنه و البته هر دوشون ساده هستند
این رو برای این گفتم که رویدادهای المان های سمت کلاینت خیلی بیشترند همانند onmousemove یا رویدادهای دیگه ای که با on شروع میشن و شاید هدف این باشه که از اون رویدادها استفاده بشه. برای اکثر المان های سمت کلاینت امکان استفاده از رویداد کلیک وجود داره ولی برای المان های سمت سرور فقط برای یه سریشون این امکان وجود داره

یه ترفند هم هست که از خودم در آوردم و گهگداری ازش استفاده می کنم اون اینجوریه که میشه یه button یا submit که در سرور کلیکش تعریف شده با خصلت Display:none داشت که دیده نشه. کنارش یه المان سمت کلاینت که هر چی بخواهیم هم میشه بذاریم.


<img src='...' onclick="CallOnClick(this)" /><asp:Button ID="Btn1" runat="server" style="display:none" />



<script type="text/javascript">
function CallOnClick(ClickedElement){
ClickedElement.nextSibling.click()
}
</script>

و این هم کد سمت سرور که با کلیک img اجرا میشه :


Protected Sub Btn1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Btn1.Click
'Type codes here
End Sub

با این کار هر المان جاوااسکریپتی می تونه از رویداد onclick و یا هر رویداد دیگه ای برای صدا زدن تابع سمت سرور یعنی ارسال فرم استفاده کنه، اون هم بدون Ajax

مزیت دیگش این هست که میشه با جاوااسکریپت کنترل کرد که آیا کلیک انجام شه یا نه یعنی مثلاً یه سری مقدارسنجی ها و ... هم میشه داشت

انشاءا.. منظور رو درست فهمیده باشم و تونسته باشم کمکی کنم، التماس دعا.


______________________________________________


لَیسَ لِلاِنسانَ الّا ما سَعی
اللّهم عجّل لولیّک الفرج

nasr
چهارشنبه 14 مرداد 1388, 09:23 صبح
سلام

ضمن تشکر من این ترفندی که خودتون به کار می برید را انجام دادم ولی اجرا نشد

آیا با C# مشکل داره؟

چون ظاهرا
nextSibling.click()
را اعمال نمیکنه
ممنون

WorldVbMan
چهارشنبه 14 مرداد 1388, 14:54 عصر
با سلام مجدد
با اینکه من از این راه حل زیاد استفاده کردم ولی بازم کد رو تست کردم و مشکلی نداشت
از اونجا که کد فوق یعنی nextSibling.click() یه کد جاوااسکریپته ربطی به زبان سمت سرورش نداره که سی شارپ باشه یا وی بی فقط مرورگر اهمیت داره.
من با Firefox3 و نیز ie7 و ie8 و Opera تستش کردم و جواب داد. باید مطمئن شد که در مرورگر جاوااسکریپت غیرفعال نباشه تا کد رو اجرا کنه.
یه نکته ی دیگه هم اینکه اصلاً ارجاعی به سرور دارید یا نه؟ یا اصلاً اروری میده یا نه؟
کد فوق رو که تو یه تابع بود میشه منتقل کرد به یه فایل مجزای جاوااسکریپت با پسوند js
بعد تگ اسکریپت رو اینجوری تصحیح کرد :


<script src='jsFils.js' type="text/javascript"></script>

و خود کد رو برد تو فایل جاوااسکریپت:


function CallOnClick(ClickedElement){
ClickedElement.nextSibling.click()
}



بعد هم اکسپلورر رو باز کرد و این مسیر رو رفت :

tools > internet options > advanced
و چک باکس ذیل رو تیکش رو برداشت:
disable script debugging (internet explorer)

سپس تو فایل جاوااسکریپش در کنار خط شامل کد ClickedElement.nextSibling.click() یه Breakpoint گذارد.

حالا بعد از اجرای پروژه و کلیک رو مثلاً img باید در قطعه کد break شده توقفی پیش بیاد وگرنه معنیش اینه که اصلاً اجرا نمیشه

نکته ی 1 بسیار مهم:
جاوااسکریپت به حروف کوچک و بزرگ حسّاسه ، باید کدها دقیقاً همونطور نوشته شن که گفتم

نکته ی 2 بسیار مهم:
شئ Btn1 که همونیه که سروریه حتماً باید در یه سطر و دقیقاً بعد از المانی که کلیک میشه یعنی img (فعلاً) بیاد یعنی :
درست :


<img src='...' onclick="CallOnClick(this)" /><asp:Button ID="Btn1" runat="server" style="display:none" />


غلط:


<img src='...' onclick="CallOnClick(this)" />
<asp:Button ID="Btn1" runat="server" style="display:none" />

البته فکر می کنم فایرفاکس با دیّمی یخده مشکل داره ولی حق داره چون درست ترش اولیه

انشاء ا... که مشکل حل شده باشه، التماس دعا


______________________________

لَیسَ لِلاِنسانَ اِلّا ما سَعی
اللّهم عجّل لولیّک الفرج