3

我有一个表单,其中按钮调用一个函数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);
      }
    });
}

如果您单击Go按钮 ( <input type="button">),它可以在每个浏览器上正常工作。如果我填写<input type="text">并按下ENTER我的键盘(或例如按下GoiOS 键盘中的按钮),则不会。所以:如果我按下它input type="button",它会起作用,而不是ENTER从键盘按下。我怎样才能让它也这样工作?

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

4

5 回答 5

3

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

form.addEventListener('submit', calcRoute);

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

于 2013-04-28T13:43:26.120 回答
0

尝试这个:

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

我相信它会同时适用于两者

于 2013-04-28T13:31:24.650 回答
0
<input type="text" id="start" name="start" onkeypress="return calcRoute(event)">

现在修改你的脚本如下:

function calcRoute(e) {
    if (e.keyCode == 13) {
        //your code
    }
}
于 2013-04-28T13:49:08.023 回答
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">

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

于 2013-04-28T13:43:20.710 回答
0

我找到了解决方案:)

<form onsubmit="calcRoute(); return false">
    <input type="text" id="start" name="start">
    <input type="submit" value="Vai">
</form>
于 2013-04-28T14:33:33.987 回答