使用ENTER和“移动”按钮在Safari Mobile(iOS)上使用onclick功能

时间:2013-04-28 13:25:48

标签: javascript html javascript-events onclick buttonclick

我有一个表单,按钮调用一个函数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或其他框架。 :)

5 个答案:

答案 0 :(得分:3)

你应该真正删除内联javascript并将该按钮变为真正的提交按钮。之后,您可以轻松捕获正在提交的表单(输入密钥或提交按钮):

form.addEventListener('submit', calcRoute);

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

答案 1 :(得分:0)

试试这个:

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

我确信它可以同时使用

答案 2 :(得分: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">

试试这个,希望它能解决你的问题。

答案 3 :(得分:0)

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

现在修改你的脚本如下:

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

答案 4 :(得分:0)

我找到了解决方案:)

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