2013-04-28 1 views
3

У меня есть форма, в которой кнопка вызывает функцию OnClick:сделать OnClick функции работы с ENTER и «Go» кнопки на Safari Mobile (прошивка)

<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 на моей клавиатуре (или, например, нажмите кнопку «Go» на клавиатуре iOS). Итак: он работает, если я нажимаю тип ввода = «кнопка», а не если я нажимаю ENTER с клавиатуры. Как я могу заставить его работать так? Заранее спасибо

EDIT: Не jQuery или другие рамки пожалуйста. :)

+0

Почему вы не используете кнопку отправки и почему используете встроенный javascript? – PeeHaa

+0

Uhm, также если я изменяю его на '' все еще не работает. Что вы подразумеваете под встроенным js? :) – MultiformeIngegno

+0

Он означает 'onclick =" calcRoute(); ". Это недооценивается по тем же причинам, что и встроенные стили. Мы избегаем встроенного javascript путем привязки обработчиков событий в нашей загрузке окна или при использовании jquery готовый документ. Но мы должны быть здесь, чтобы ответить на ваш вопрос больше, чем мы здесь, чтобы критиковать ваш стиль кода. – Stoutie

ответ

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

+0

Я не знаю, что вы пытаетесь сделать, и, следовательно, не можете ответить правильно, но попробуйте:

user2243116

+0

Uhm, нет. То же поведение. Вот демо: goo.gl/wr3qi, нажмите «calcola percorso». :) – MultiformeIngegno

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

К сожалению, я не хочу использовать jQuery. – MultiformeIngegno

3

Вы действительно должны просто удалить этот встроенный javascript и сделать эту кнопку в реальной кнопке отправки. После этого вы можете легко захватить форму их представления (кастрированный баран будет ввести ключ или кнопка отправки):

form.addEventListener('submit', calcRoute); 

Демо: http://jsfiddle.net/ghK4P/

+0

Я попробовал (вот демо с вашим кодом): http://ffio.it/test.html Нажмите «calcola percorso». Когда вы вводите адрес, он должен построить маршрут. Ничего не происходит ... :) – MultiformeIngegno

+0

Вы перезаписали функцию 'calcRoute()'. Просто добавьте 'e.preventDefault()' к своей собственной функции и не забудьте добавить 'e' в качестве аргумента. – PeeHaa

+0

Также в вашем конкретном случае вы скорее захотите сделать var var = document.getElementbyId ('percorsoform'); ' – PeeHaa

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

Теперь измените сценарий следующим образом:

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

Uhm, не повезло: http://ffio.it/user2243116.html – MultiformeIngegno

+0

вы можете сказать, чего вы ожидаете и что получаете? – user2243116

+0

Он должен работать следующим образом (введите адрес Рима и нажмите кнопку «Перейти»): http://goo.gl/wr3qi – MultiformeIngegno

0

Я нашел решение :)

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