2013-04-28 37 views
3

我在其中的按钮调用的onclick函数形式:请用ENTER和“转到”按钮在Safari手机(IOS)的onclick功能工作

<form> 
    <input type="text" id="start" name="start"> 
    <input type="button" onclick="calcRoute();" value="Go"> 
</form> 

function calcRoute() { 
    var start = document.getElementById('start').value; 
     var end = "My Address in Rome"; 
     var request = { 
     origin:start, 
     destination:end, 
     travelMode: google.maps.DirectionsTravelMode.TRANSIT 
     }; 
    directionsService.route(request, function(response, status) { 
     if (status == google.maps.DirectionsStatus.OK) { 
     directionsDisplay.setDirections(response); 
     } 
    }); 
} 

如果你点击它可以正常工作在每一个浏览器“开始”按钮(<input type="button">)。如果我填写<input type="text">并按下我的键盘上的ENTER(例如,按下iOS键盘上的“Go”按钮),则不会。所以:如果我按下输入类型=“按钮”,而不是按键盘上的ENTER按钮,它会起作用。我怎样才能让它工作呢?在此先感谢

编辑:请不要jQuery或其他框架。 :)

+0

为什么你不使用提交按钮,为什么你使用内嵌JavaScript? – PeeHaa 2013-04-28 13:33:38

+0

呃,如果我把它改成''仍然不起作用。内联js是什么意思? :) – MultiformeIngegno 2013-04-28 13:36:45

+0

他的意思是'onclick =“calcRoute();”'。由于与内联样式类似的原因,这是不被赞赏的。我们通过在窗口加载中绑定事件处理程序来避免内联javascript,或者如果使用jquery,文档就绪。但我们应该在这里回答你的问题,而不是我们在这里批评你的代码风格。 – Stoutie 2014-08-08 18:34:38

回答

0

试试这个:

<form onsubmit="calcRoute()"> 
    <input type="text" id="start" name="start"> 
    <input type="button" onclick="calcRoute();" value="Go"> 
</form> 

我敢肯定它会与两个

+0

Uhm,no:'(。表单以这种方式提交给服务器(在URL中我有'?start = INPUT_TEXT' – MultiformeIngegno 2013-04-28 13:33:25

+0

我不知道你在做什么,因此不能正确回答,但试试:

user2243116 2013-04-28 13:35:52

+0

Uhm,no。相同的行为。下面是演示:goo.gl/wr3qi,点击“calcola percorso”。:) – MultiformeIngegno 2013-04-28 13:37:23

0

工作,如果你使用jQuery

$(document).ready(function() { 
$("#start").bind('keyup',function(event){ 
    if(event.keyCode == 13){ 
     $("#start").click(); 
    } 
}); 
}); 

它会触发代码中可能添加此在你的文本框中按回车键,你可以点击按钮功能。

如果你不使用jQuery试试这个

<input type="text" id="start" name="start" onkeydown="if (event.keyCode == 13) document.getElementById('fire_calRoute').click()"> 
<input type="button" id='fire_calRoute' onclick="calcRoute();" value="Go"> 

试试这个,希望这将解决您的问题。

+1

不幸的是我 – MultiformeIngegno 2013-04-28 13:52:29

3

你应该真的只是删除内嵌的JavaScript,并将该按钮变成一个真正的提交按钮。之后,你可以轻松地捕获提交表单(阉来回车键或提交按钮):

form.addEventListener('submit', calcRoute); 

演示:http://jsfiddle.net/ghK4P/

+0

我试过(这里是演示代码):http://ffio.it/test.html 点击“calcola percorso”。当你输入一个地址时,它应该建立路由。没有任何反应...... :) – MultiformeIngegno 2013-04-28 13:52:05

+0

你已经覆盖了'calcRoute()'函数。只需将'e.preventDefault()'添加到您自己的函数中,并且不要忘记添加'e'作为参数。 – PeeHaa 2013-04-28 13:57:52

+0

另外在你的具体情况下,你宁愿要''var form = document.getElementbyId('percorsoform');' – PeeHaa 2013-04-28 13:59:49

0
<input type="text" id="start" name="start" onkeypress="return calcRoute(event)"> 

现在修改脚本如下:

function calcRoute(e) { 
    if (e.keyCode == 13) { 
     //your code 
    } 
} 
+0

严,没有运气:http://ffio.it/user2243116.html – MultiformeIngegno 2013-04-28 13:56:12

+0

你能告诉你你期待什么,你得到什么? – user2243116 2013-04-28 13:59:13

+0

它应该像这样工作(键入罗马地址并按下“Go”按钮):http://goo.gl/wr3qi – MultiformeIngegno 2013-04-28 14:01:24

0

我找到了解决办法:)

<form onsubmit="calcRoute(); return false"> 
    <input type="text" id="start" name="start"> 
    <input type="submit" value="Vai"> 
</form>