简体   繁体   中英

Android/ Phonegap - onClick() not working

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?

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.

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>

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´sa 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 =()

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.

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

delete this code from index.html

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM