2012-05-03 36 views
14

我使用PhoneGap的,我试图检测的onClick,但是Android的似乎完全忽略它,下面就是我想:的Android/PhoneGap的 - 的onClick()不工作

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

我尝试了好几种onClick的变体包括JavaScript,jQuery等,但这些似乎都不起作用。

我已经注意到onChange的工作原理,但是这对我没有太大用处,因为我需要使用提示要求用户确认更改,如果不是,那么什么都不做。但是,使用onchange仍会更改下拉列表中的项目。

有人可以帮忙吗?

+0

你有没有尝试通过JavaScript连接呢?它更干净,可能有更好的支持。只需添加一个id到select然后'document.getElementById('foo')。onclick = StartButtons;' – GillesC

回答

0

你有没有尝试设置你的方法被称为“方法”,而不是“方法();”?因此,也许你可以试试你的路线为:

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

然后希望你的方法将被调用。

+0

我以前试过这个,不幸的是它没有工作,还有其他想法?谢谢 –

+3

'StartButtons'是一个指向函数的指针。 'StartButtons()'将执行该功能。 – Omeriko

4

使用javascript为您的对象添加单击事件侦听器。首先添加一个ID为对象:

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

然后调用addEventListener():

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

PhoneGap的文档recomends运行在 “deviceready” 事件的所有JavaScript代码。所以,你的代码应该是这样的:

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

不幸的是,这并没有奏效,Android似乎完全忽略了这些调用。任何其他想法? –

+0

另外,我没有注意到onChange工作,但是这对我没有太大的用处,因为我需要使用提示询问用户是否想要更改,如果不是,那么会忽略它(但是使用onchange仍然会更改内的项目dopbox)。谢谢 –

11

我与jQuery的同样的问题,安卓似乎忽视了点击事件JavaScript的。本来,我用jQuery代码如下所示:

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

我不得不将其更改为:如果你使用jQuery在所有

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

不知道,但希望这有助于。

1

小心,绑定在科尔多瓦3.4输入onclick,不起作用。但它与div元素很好。考虑到,输入元素是表单元素的一部分,比如select元素,它可能是你的问题。

0

https://ssl.gstatic.com'unsafe-eval'; style-src'self''unsafe-inline';媒体SRC *“>

从index.html的

+0

'编辑必须至少有6个字符;在这篇文章中还有什么可以改进的地方吗? - 哦哦。 – fWd82

1

user1183085's的答案是正确的删除此代码。Android不承认单击事件Web应用程序做的,这使得SENCE,因为移动应用不是网络当原生的,所以这就是为什么phonegap,但因为它与jquery,而不是原生Java android库直接工作。我把我的代码这样:

web按钮或元素onclick处理所有的网页界面和特殊按钮或者处理移动接口的元件。Here's我的代码的一部分:

//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,就解决了我的一生=()

+0

请阅读如何使用标记格式化您的答案。现在,它非常接近,因为它很难阅读,所以应该得到低价。换句话说:你希望你的答案有帮助,而不仅仅是一些文本混乱。 – GhostCat

+0

对不起,我是新的......我的错误,我读过它。感谢您的建议 – Prometeo