2012-05-03 29 views
14

estoy usando PhoneGap y estoy tratando de detectar el onclick, sin embargo, Android parece ignorar por completo, a continuación es lo que estoy tratando:Android/Phonegap - onClick() no funciona

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

He probado varios Las variaciones de onClick incluyen javascript, jQuery, etc. Sin embargo, ninguno de estos parece funcionar.

He notado que onChange funciona, sin embargo, esto no es de mucha utilidad para mí, ya que necesito usar un mensaje pidiéndole al usuario que confirme el cambio, si no es así, no haga nada. Sin embargo, usar onchange aún cambia el ítem dentro del menú desplegable.

¿Alguien puede ayudar con esto?

+0

¿Ha Intente conectar a través de JavaScript en su lugar? Es más limpio y probablemente tenga un mejor soporte. Simplemente agregue una identificación a la selección y luego 'document.getElementById ('foo'). Onclick = StartButtons;' – GillesC

Respuesta

0

¿Ha intentado configurar su método para ser llamado a "método" en lugar de "método();"? Así que tal vez podría probar su línea como:

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

Entonces con suerte su método será llamado.

+0

He intentado esto antes, desafortunadamente no funcionó, ¿alguna otra idea? Gracias –

+3

'StartButtons' es un puntero a una función. 'StartButtons()' ejecutará la función. – Omeriko

4

Agregue click listener de eventos a su objeto con javascript. Primero se debe agregar un identificador de objeto:

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

y luego llamar a addEventListener():

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

documentación Phonegap recomends para ejecutar todo el código JavaScript en el evento "deviceready". Así que el código debería tener este aspecto:

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

Desafortunadamente, esto no funcionó, el Android simplemente parece ignorar por completo las llamadas. ¿Alguna otra idea? –

+0

Alternativamente, he notado que onChange funciona, sin embargo, esto no me sirve mucho ya que necesito usar un mensaje que le pregunte al usuario si quiere cambiar, si no es así, se ignorará (sin embargo, al usar onchange, se cambia el elemento dentro el dopbox). Gracias –

11

que tenían el mismo problema con jQuery, Android parece ignorar el evento click en javascript Originalmente, mi código con jQuery tiene este aspecto:

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

tuve que cambiarlo a:

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

No estoy seguro si usted está usando jQuery en absoluto, pero espero que esto ayude.

1

Tenga cuidado, enlace un clic en una entrada en Cordova 3.4, no funciona. Pero funciona muy bien con un elemento div. Teniendo en cuenta que los elementos de entrada son parte del elemento de formulario, como elemento de selección, puede ser su problema.

0

https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'inseguro-en línea'; medios-src * ">

borrar el código de index.html

+0

'Las ediciones deben tener al menos 6 caracteres; ¿Hay algo más que mejorar en esta publicación? '- Oho SO. – fWd82

1

user1183085's respuesta es la correcta. Android no reconoce haga clic en eventos como aplicaciones web hacen, esto hace que el SENCE desde aplicaciones móviles no son Web cuando es nativo, por eso es que se hizo phonegap, pero como funciona directamente con jquery y no con bibliotecas java nativas de Android. Puse mi código de esta manera:

Los botones o elementos web hacen clic para manejar todas las interfaces web y botones especiales o elementos ontouchend para manejar las interfaces móviles.Tope aquí tienes una parte de mi código:

//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')}); 

gracias user1183085 usuario, que resolvió mi vida para siempre =()

+0

Lea acerca de cómo usar el marcado para formatear su respuesta. Tal como está ahora, está muy cerca de merecer votos a la baja, ya que es muy difícil de leer. En otras palabras: quiere que sus respuestas sean útiles, no solo un desorden de texto. – GhostCat

+0

lo siento, soy nuevo ... mi error, lo leeré. gracias por tus sugerencias – Prometeo