Dominik Mikiewicz

Dominik Mikiewicz maps made easy,
www.cartomatic.pl ||
cartoninjas.net

Temat: Jak zmusić asp:button do kliknięcia z javascript?

Witam,

Mam na stronie asp:imagebutton, który po kliknięciu zmienia swój obrazek w zależności od miejsca, w którym został kliknięty. Napisałem też coś na kształt 'selection band', tak jak działa zoom box w programach graficznych - zaznaczenie 'rysuję' div-em.
Niestety, gdy 'rysuję' zaznaczenie nad przyciskiem, staje się on nieaktywny a tym samym nie reaguje na zdarzenie click - zaznaczenie wykorzystuje onmousedown, onmousemove i onmouseup, więc myślałem, że wywoła również click na przycisku, ale niestety.

Próbowałem dodać do funkcji obsługującej onmouseup document.getElementById().click(), ale nie działa. Nie działa też dodanie drugiego onmouseup do tagu asp:button - onmouseup="this.click();"

Macie może jakiś patent, jak zmusić asp:button, bądź asp:imagebutton do kliknięcia bez 'dotykania' go?
Mój image button jest działa pod update manager i odświerza kilka elementów na stronie. Generalnie chodzi o zmuszenie kontrolki asp do asynchronicznego postback.

Dzięki
Dom

konto usunięte

Temat: Jak zmusić asp:button do kliknięcia z javascript?

Dominik Mikiewicz:
Witam,

Mam na stronie asp:imagebutton, który po kliknięciu zmienia swój obrazek w zależności od miejsca, w którym został kliknięty. Napisałem też coś na kształt 'selection band', tak jak działa zoom box w programach graficznych - zaznaczenie 'rysuję' div-em.
Niestety, gdy 'rysuję' zaznaczenie nad przyciskiem, staje się on nieaktywny a tym samym nie reaguje na zdarzenie click - zaznaczenie wykorzystuje onmousedown, onmousemove i onmouseup, więc myślałem, że wywoła również click na przycisku, ale niestety.

Próbowałem dodać do funkcji obsługującej onmouseup document.getElementById().click(), ale nie działa. Nie działa też dodanie drugiego onmouseup do tagu asp:button - onmouseup="this.click();"

Macie może jakiś patent, jak zmusić asp:button, bądź asp:imagebutton do kliknięcia bez 'dotykania' go?
Mój image button jest działa pod update manager i odświerza kilka elementów na stronie. Generalnie chodzi o zmuszenie kontrolki asp do asynchronicznego postback.

Dzięki
Dom

Aby zmusić kontrolkę do postbacka wystarczy użyć wspomnianego .click(), np:

<asp:ImageButton runat="server" ID="ImageButton1" ImageUrl="~/alarm.gif" OnClick="ImageButton1_Click" />
<br />
<br />
<a href="javascript: document.getElementById('ImageButton1').click();">Test click</a>

Działa to również dla zwykłego buttona (nie działa dla linkbuttona, jest na to inny sposób). Najczęstszym błędem jest tutaj nie samo click() lecz zły ID. Należy użyć takiego ID przy getElementById:
this.ImageButton1.ClientID

Zainstaluj sobie FireBuga i popatrz czy jakieś błędy JS nie wyskakują. Często getElementById zwraca null i to jest problem.
Dominik Mikiewicz

Dominik Mikiewicz maps made easy,
www.cartomatic.pl ||
cartoninjas.net

Temat: Jak zmusić asp:button do kliknięcia z javascript?

Znaczy się byłem całkiem blisko... 'document.getElementById().click()'...
Nie wiem czemu nie działało poprzednio, teraz działa. Pewnie literówka. Dzięki za pomoc :-)

Ale mam jeszcze jedno pytanie - czy możliwe jest kliknięcie asp:button z atrybutem visible="false" ? Testowałem przed chwilą, i o ile widoczny daje się kliknąć metodą click(), to niewidoczny nie. Do obejścia, czy lepiej zapomnieć?

pzdr
dom

konto usunięte

Temat: Jak zmusić asp:button do kliknięcia z javascript?

Dominik Mikiewicz:
Ale mam jeszcze jedno pytanie - czy możliwe jest kliknięcie asp:button z atrybutem visible="false" ? Testowałem przed chwilą, i o ile widoczny daje się kliknąć metodą click(), to niewidoczny nie. Do obejścia, czy lepiej zapomnieć?

Możliwe, ale nie warte zachodu. Podstawowymi problemami są tu:
1) kontrolka nie jest renderowana, więc nie istnieje w DOM i JS nie znajdzie jej
2) obejście i próba "ręczna" zgłoszenia postbacka prowadzi do wielu problemów z kontrolą request/response, viewstate etc
Ogólnie lepiej się tym nie zajmować tylko użyć starego dobrego obejścia problemu:

<div style="display: none;">
<asp:Button ...
</div>

Kontrolka będzie fizycznie na stonie, przed userem będzie ukryta DIVem.
Dominik Mikiewicz

Dominik Mikiewicz maps made easy,
www.cartomatic.pl ||
cartoninjas.net

Temat: Jak zmusić asp:button do kliknięcia z javascript?

Ach, taki myk... In divs we trust, he, he... Dzięki wielkie :-)

Następna dyskusja:

PROGRAMISTA ASP.NET, C# Pil...




Wyślij zaproszenie do