Android/Phonegap - onClick() не работает

Я использую phonegap и пытаюсь обнаружить onClick, однако Android, похоже, полностью игнорирует его, ниже - то, что я пытаюсь:

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

Я пробовал несколько вариантов onClick, включая javascript, jQuery и т.д. Однако ни один из них не работает.

Я заметил, что onChange работает, но для меня это не очень полезно, поскольку мне нужно использовать подсказку, чтобы пользователь мог подтвердить изменение, если это не так, ничего не делайте. Однако использование onchange все еще меняет элемент в раскрывающемся списке.

Кто-нибудь может помочь с этим?

Ответы

Ответ 1

У меня была такая же проблема с jQuery, Android, похоже, игнорирует событие click в javascript. Первоначально мой код с jQuery выглядит так:

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

Мне пришлось изменить его на:

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

Не уверен, что вы вообще используете jQuery, но надеюсь, что это поможет.

Ответ 2

Добавить прослушиватель событий кликов к вашему объекту с помощью javascript. Сначала добавьте id в объект:

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

И затем вызовите addEventListener():

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

Документация Phonegap рекомендует использовать весь ваш код javascript в событии "deviceready". Поэтому ваш код должен выглядеть так:

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>

Ответ 3

Остерегайтесь, привяжите onclick на входе в Cordova 3.4, не работает. Но он отлично работает с элементом div. Учитывая, что элементы ввода являются частью элемента формы, например, элемента select, это может быть ваша проблема.

Ответ 4

user1183085 ответ правильный. Android не распознает события кликов по мере того, как делают веб-приложения, так как мобильные приложения не являются веб-приложениями, поскольку они являются родными, поэтому телефонная связь была создана, но поскольку она работает с jQuery, а не с родными java-андроидными библиотеками напрямую. Я поместил свой код таким образом:

Веб-кнопки или элементы onclick обрабатывают все веб-интерфейсы, а также специальные кнопки или элементы, которые должны обрабатывать мобильные интерфейсы. Вот часть моего кода:

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

спасибо пользователю user1183085, который решил мою жизнь навсегда =()

Ответ 5

Вы пытались настроить метод для вызова метода "method" вместо "method();"? Поэтому, возможно, вы могли бы попробовать свою линию:

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

Затем, надеюсь, ваш метод будет вызван.

Ответ 6

https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'небезопасно-inline'; media-src *" >

удалите этот код из index.html