15

I am using phonegap and am trying to detect the onClick, however Android seems to completely ignore it, below is what I am trying:

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

I have tried several variations of the onClick include javascript, jQuery etc. however none of these seem to work.

I have noticed that onChange works, however this is not of much use to me as I need to use a prompt asking the user to confirm the change, if it is no then do nothing. However, using onchange still changes the item within the dropdown.

Can someone please help with this?

SingleWave Games
  • 2,618
  • 9
  • 36
  • 52
  • Have you try attaching via javascript instead? It's cleaner and probably has a better support. Just add an id to the select and then `document.getElementById('foo').onclick = StartButtons;` – GillesC May 03 '12 at 16:14

6 Answers6

11

I had the same problem with jQuery, Android seems to ignore the click event in javascript. Originally, my code with jQuery looks like this:

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

I had to change it to:

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

Not sure if you're using jQuery at all, but hope this helps.

marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
user1183085
  • 111
  • 1
  • 4
4

Add click event listener to your object with javascript. First add an id to object:

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

And then call addEventListener() :

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

Phonegap documentation recomends to run all your javascript code in "deviceready" event. So your code should look like this:

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>
Chemik
  • 1,459
  • 13
  • 23
  • Unfortunetly this did not work, the Android just seems to completly ignore the calls. Any other ideas? – SingleWave Games May 04 '12 at 15:28
  • Alternativly, I have notcied that onChange works, however this is not much use to me as I need use a prompt asking the user is they want to change, if it is no then this is ignored (however using onchange still changes the item within the dopbox). Thanks – SingleWave Games May 04 '12 at 15:29
4

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

delete this code from index.html

  • `Edits must be at least 6 characters; Is there something else to improve in this post?` - Oho SO. – fWd82 Jan 31 '17 at 14:33
2

user1183085´s answer is the right one. Android does not recognize click events as web apps do, this makes sence since mobile apps are not web when native, so that is why phonegap was made but since it works with jquery and not native java android libraries directly. I put my code this way:

The web buttons or elements onclick to handle all web interfaces, and special buttons or elements ontouchend to handle the mobile interfaces. Here´s a part of my code:

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

thanks user user1183085, that solved my life forever =()

Meyer
  • 1,662
  • 7
  • 21
  • 20
Prometeo
  • 33
  • 1
  • 11
  • Please read about how to use markup to format your answer. As it is right now, it is very close to just deserve downvotes as it is very hard to read. In other words: you want your answers to be helpful, not just to be some mess of text. – GhostCat Dec 14 '16 at 15:18
  • sorry I´m new... my mistake, I´l read about it. thanks for your suggestions – Prometeo Dec 14 '16 at 23:46
1

Watch out, bind an onclick on an input in Cordova 3.4, doesn't work. But it works great with a div element. Considering, input elements are part of form element, like select element, it may be your problem.

JBENOIT
  • 421
  • 3
  • 14
0

Have you tried setting your method to be called to "method" instead of "method();"? So maybe you could try your line as:

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

Then hopefully your method will be called.

thomas.cloud
  • 881
  • 13
  • 30