View Full Version : سوال: مشکل در onclick
mahdioo12194
پنج شنبه 14 شهریور 1392, 03:51 صبح
سلام مشکل کد زیر چیه ؟ من می خوام با کلیک روی دکمه یه تابع جاوا فراخوانی بشه ولی عمل نمی کنه!
<input id="Button6" onclick="b()" type="button" value="show" />
<script type="text/javascript">
$(document).ready(function () {
function b(u)
{
$('.backdrop, .box').animate({ 'opacity': '.50' }, 300, 'linear');
$('.box').animate({ 'opacity': '1.00' }, 300, 'linear');
$('.backdrop, .box').css('display', 'block');
}
});
jalil_gh
پنج شنبه 14 شهریور 1392, 09:08 صبح
شما تابع b رو داخل document.ready تعریف کردید. onclick بهش دسترسی نداره.
mehdi.mousavi
پنج شنبه 14 شهریور 1392, 10:54 صبح
سلام.
مشکل اصلی این هستش که نحوه استفاده شما از JavaScript در واقع Unobtrusive نیست. یعنی چی؟
شما کدهای JavaScript و HTML اتون رو نباید با هم ترکیب کنید، در حقیقت نباید onclick رو اونجا در HTML بنویسید.
در عوض، می تونید با استفاده از jQuery، بدین شکل عمل کنید:
$('#Button6').click(function() {
//Button 6 is clicked...
});
بدین ترتیب، میتونید کد مورد نظرتون رو در Handler فوق بنویسید. اینطوری دیگه نیازی نیست نام تابع یا Event مورد نظر رو در HTML بیارید...
موفق باشید.
mahdioo12194
پنج شنبه 14 شهریور 1392, 12:18 عصر
سلام.
مشکل اصلی این هستش که نحوه استفاده شما از JavaScript در واقع Unobtrusive نیست. یعنی چی؟
شما کدهای JavaScript و HTML اتون رو نباید با هم ترکیب کنید، در حقیقت نباید onclick رو اونجا در HTML بنویسید.
در عوض، می تونید با استفاده از jQuery، بدین شکل عمل کنید:
$('#Button6').click(function() {
//Button 6 is clicked...
});
بدین ترتیب، میتونید کد مورد نظرتون رو در Handler فوق بنویسید. اینطوری دیگه نیازی نیست نام تابع یا Event مورد نظر رو در HTML بیارید...
موفق باشید.
در واقع من می خوام مقداری رو مثلا url یک عکس در گرید ویو رو بفرستم به تابع وا نجا عملیات لازم رو انجام دهم؟!!
<input id="Button6" onclick='b(<%#Eval("pic") %>)' type="button" value="show" />
حالا چه جور باید بنویسم؟!!
mahdioo12194
پنج شنبه 14 شهریور 1392, 12:18 عصر
شما تابع b رو داخل document.ready تعریف کردید. onclick بهش دسترسی نداره.
بدون آن هم نشد!
mahdioo12194
پنج شنبه 14 شهریور 1392, 14:12 عصر
تقریبا حل شد مشکل فقط الان می خوام url رو به image نسبت بدم ولی عکس چیزی نشون نمی ده!!!
function b(u)
{
var img = document.getElementById('<%=Image3.ClientID%>');
img.setAttribute ('ImageUrl',u);
}
<input id="Button6" onclick="b('<%#Eval("pic")%>')" type="button" value="show" />
mehdi.mousavi
پنج شنبه 14 شهریور 1392, 15:33 عصر
در واقع من می خوام مقداری رو مثلا url یک عکس در گرید ویو رو بفرستم به تابع وا نجا عملیات لازم رو انجام دهم؟!!
<input id="Button6" onclick='b(<%#Eval("pic") %>)' type="button" value="show" />
حالا چه جور باید بنویسم؟!!
سلام.
بسیار خوب، اول یه Data Attribute برای اون Element تعریف می کنید و مقدارش رو برابر pic میذارید (فرض میکنم pic فیلدی هستش که URL اون resource رو در اختیارمون میذاره):
<input id="Button6" data-pic='<%#Eval("pic")%>' type="button" value="show" />
حالا، مجددا کدی که در پاسخ اول بهتون دادم و بی اهمیت از کنارش گذشتید اینجا به کارمون میاد:
$(function(){
$('#Button6').click(function(){
var url = $(this).data('pic');
alert('url: ' + url);
});
});
اونجاییکه نوشتم alert، می تونید URL به تصویر مورد نظر رو set کنید.
موفق باشید.
mahdioo12194
پنج شنبه 14 شهریور 1392, 16:18 عصر
سلام هم با کد شما آقای موسوی هم با کد قبلی من url قابل دسترس است مشکل در set کردن url به تصویر است که تصویر نشون داده نمیشه یعنی alert میزارم url رو میده!! اما در تصویر ست نمیشه یعنی :
var img = document.getElementById('<%=Image3.ClientID%>');
قمimg.setAttribute ('ImageUrl',u);
<asp:Image ID="Image3" runat="server" />
با html image هم نشد!!
$(function () {
$('#Button6').click(function () {
var url = $(this).data('pic');
var img= document.getElementById('#yy');
img.setAttribute('scr', url);
});
});
<p dir="rtl">
<img id="yy" alt="" src="" style="height: 114px; width: 87px" /></p>
mehdi.mousavi
پنج شنبه 14 شهریور 1392, 17:19 عصر
سلام.
باید بدین شکل اون دو خط رو تغییر بدید تا image ست بشه:
var img= $('#yy');
img.attr('src', url);
موفق باشید.
mahdioo12194
پنج شنبه 14 شهریور 1392, 18:53 عصر
سلام.
باید بدین شکل اون دو خط رو تغییر بدید تا image ست بشه:
var img= $('#yy');
img.attr('src', url);
موفق باشید.
من مشکل رو فهمیدم چون تو دیتابیس آدرس address/~ ذخیره شده که در src باید address/.. باشه حالا چه جور باید تبدیل کنم؟!!
mahdioo12194
پنج شنبه 14 شهریور 1392, 18:54 عصر
سلام.
باید بدین شکل اون دو خط رو تغییر بدید تا image ست بشه:
var img= $('#yy');
img.attr('src', url);
موفق باشید.
سلام من مشکل رو فهمیدم چون آدرس به صورت
address/~
ذخیره شده در دیتابیس و برای src ایمیج باید address/.. باشه حالا این تبدیل رو چه جور انجام بدم؟!
mahdioo12194
پنج شنبه 14 شهریور 1392, 22:54 عصر
خوب با replace مشکل را حل کردم اما یه مشکل دیگه هست که وقتی رو دکمه کلیک می کنم فقط برای دکمه اولین سطر گرید ویو عمل می کنه در دکمه های سطر های دیگه عمل نمی کند!!
sinoser
پنج شنبه 14 شهریور 1392, 23:47 عصر
خوب با replace مشکل را حل کردم اما یه مشکل دیگه هست که وقتی رو دکمه کلیک می کنم فقط برای دکمه اولین سطر گرید ویو عمل می کنه در دکمه های سطر های دیگه عمل نمی کند!!
چون شما برای رویداد کلیک فقط ای دی اولین دکمه رو درج کردین
$('#Button6').click(function....
برای این که همه دکمه ها بشن
اگر کل دکمه ها داخل تگی مثل div با ای دی buttons باشن داریم
$('#buttons :button').click(function...ادامه همون قبلیا
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.