2012-05-03 1 views
14

Używam PhoneGap i staram się wykryć onClick, jednak Android wydaje się całkowicie zignorować, poniżej jest co usiłuję:Android/PhoneGap - onClick() nie działa

<select name="func" onclick="StartButtons();" data-native-menu="true"> 

Próbowałem kilka wariacje onClick obejmują javascript, jQuery itp., jednak żaden z nich nie działa.

Zauważyłem, że działa OnChange, jednak nie jest to dla mnie zbyt przydatne, ponieważ potrzebuję zachęty, prosząc użytkownika o potwierdzenie zmiany, jeśli nie, to nie rób nic. Jednak używanie onchange nadal zmienia pozycję w liście rozwijanej.

Czy ktoś może Ci w tym pomóc?

+0

Czy spróbować mocowania poprzez javascript zamiast? Jest czystszy i prawdopodobnie ma lepsze wsparcie. Po prostu dodaj identyfikator do wyboru, a następnie "document.getElementById (" foo "). Onclick = StartButtons;' – GillesC

Odpowiedz

0

Czy próbowałeś ustawić metodę do wywołania "method" zamiast "method();"? Więc może mógłbyś wypróbować swoją linię jako:

<select name="func" onclick="StartButtons" data-native-menu="true"> 

Mam nadzieję, że twoja metoda zostanie wywołana.

+0

Próbowałem już tego wcześniej, niestety, nie zadziałało, żadnych innych pomysłów? Dzięki –

+3

"StartButtons" to wskaźnik do funkcji. "StartButtons()" wykona tę funkcję. – Omeriko

4

Dodaj detektor zdarzeń kliknięcia do obiektu za pomocą javascript. Najpierw dodać identyfikator do obiektu:

<select id="obj_id" name="func" data-native-menu="true"> 

a następnie zadzwonić addEventListener():

document.getElementById("obj_id").addEventListener("click", StartButtons, false); 

dokumentacja PhoneGap recomends uruchomić cały swój kod javascript w "deviceready" imprezy. Więc kod powinien wyglądać tak:

main.js:

function StartButtons() { ... } 

    function onDeviceReady() { 
     ... 
     document.getElementById("obj_id") 
      .addEventListener("click", StartButtons, false); 
     ... 
    } 

    function init() { 
     document.addEventListener("deviceready", onDeviceReady, false); 
    } 

index.html:

... 
     <script type="text/javascript" charset="utf-8" src="main.js"></script> 
    </head> 
    <body onload="init();"> 
     ... 
     <select id="obj_id" name="func" data-native-menu="true"> 
     ... 
    </body> 
+0

Niestety to nie zadziałało, Android wydaje się zupełnie ignorować połączenia. Jakieś inne pomysły? –

+0

Alternatywnie, nie wiedziałem, że naChange działa, jednak nie jest to wiele przydatne dla mnie, ponieważ potrzebuję użyć pytania pytającego użytkownika, czy chcą zmienić, jeśli nie, to jest to ignorowane (jednak używanie onchange nadal zmienia pozycję w obrębie dopbox). Dzięki –

11

miałem ten sam problem z jQuery, Android wydaje się ignorować zdarzenie click w javascript. Początkowo mój kod z jQuery wygląda następująco:

$("#element").click(function() { alert("message"); }); 

musiałem go zmienić na:

$("#element").on("touchend", function() { alert("message"); }); 

Nie wiem, czy używasz jQuery w ogóle, ale mam nadzieję, że to pomaga.

1

Uważaj, bind on on na wejściu w Cordova 3.4, nie działa. Ale działa świetnie z elementem div. Biorąc pod uwagę, elementy wejściowe są częścią elementu formularza, podobnie jak element wyboru, może to być Twój problem.

0

https://ssl.gstatic.com "unsafe-eval"; style-src 'self' 'unsafe-inline'; media-src * ">

usunąć ten kod z index.html

+0

"Zmiany muszą składać się z co najmniej 6 znaków; Czy jest coś jeszcze do poprawienia w tym poście? "- Oho SO. – fWd82

1

user1183085's odpowiedź jest właściwa. Android nie rozpoznaje kliknij zdarzenia jako aplikacje webowe zrobić, to ma sens, ponieważ aplikacje mobilne nie są internetowej gdy jest natywny, dlatego został stworzony phonegap, ale ponieważ działa bezpośrednio z bibliotekami jquery, a nie natywnymi bibliotekami Android java, umieszczam mój kod w następujący sposób:

Przyciski internetowe lub elementy na stronie, aby obsługiwać wszystkie interfejsy internetowe i specjalne przyciski lub elementy ontouchend do obsługi interfejsów mobilnych.Here's częścią mojego kodu:

//this handles the login button events for the mobile touch of the user 
$("button.login-button").on("touchend", function() {alert('hello touch ! =o')}); 

//this handles the login button events for web clicks 
$("button.login-button").on("click", function() {alert('hello click ! =o')}); 

dzięki użytkownik user1183085, że moje życie na zawsze rozwiązany =()

+0

Przeczytaj, jak używać znaczników do sformatowania odpowiedzi. Tak jak obecnie, jest to bardzo bliskie zasłużenie, ponieważ jest ono bardzo trudne do odczytania. Innymi słowy: chcesz, aby twoje odpowiedzi były pomocne, nie tylko po to, by być bałaganem tekstu. – GhostCat

+0

Przepraszam jestem nowy ... mój błąd, przeczytam o tym. dzięki za twoje sugestie – Prometeo