jquery не будет отправляться при нажатии кнопки iphone GO

EDIT. Только что понял, что это больше не проблема с новой iOS. Я не обновлял свой телефон, но он отлично работает с моим iPad, поэтому я предполагаю, что если я обновлю его, он будет работать нормально. Спасибо.

Этот вопрос задавали несколько раз, но принятый ответ не работает для меня. Я надеюсь, что кто-то заметит какую-нибудь глупую ошибку и не вернется с «просто используйте тип ввода = отправить».

Я пытаюсь выполнить проверку ajax в форме входа, поэтому форма входа не имеет кнопки отправки, а скорее тип ввода = «кнопка», которая вызывает javascript при нажатии. Однако при использовании iphone нажатие кнопки «GO» буквально отправляет форму (она публикуется на той же странице и помещает переменные в строку запроса).

На самом деле нажатие (касание) кнопки работает правильно. Только использование кнопки GO портит его.

Вот мой код формы:

<form name="loginform" id="loginform">
<table>
<tr><td>Username:</td><td><input type="text" id="username" name="username" /></td></tr>
<tr><td>Password:</td><td><input type="password" id="password" name="password" /></td></tr>
<tr><td></td><td align="right"><button type="button" id="login">Login</button></td></tr>
</table>
</form>

и вот мой javascript:

<script src="http://code.jquery.com/jquery-1.5.js"></script>
<script language="javascript">
$(document).ready(function(){
$(window).load(function(){
    $("#login").click( function() {
        checkanswers();
    });
    $("#username, #password").keyup(function(event){
        if(event.keyCode==13){
            checkanswers();
        }
    });
    $("#loginform").submit(function() {
        checkanswers();
    });
});
});
</script>

Любая помощь приветствуется!


person Edward Glasser    schedule 08.11.2011    source источник
comment
Насколько я могу судить, нет необходимости в $(window).load; ваш код не зависит от каких-либо асинхронно загружаемых ресурсов для полного присутствия и учета.   -  person Greg Pettit    schedule 09.11.2011
comment
У меня сложилось впечатление, что если это связано с пользовательским вводом (например, нажатием клавиши или щелчком мыши), то их лучше обслуживать в разделе window.load. Это не точно?   -  person Edward Glasser    schedule 09.11.2011
comment
Нет, элемент просто должен быть в модели документа. $(window).load будет работать, но тогда вам не понадобится функция готовности документа. Выберите один, но я думаю, что готовый документ будет работать лучше. Извините, кстати, у меня нет ответа на ваш вопрос GO. Не знаком с тем, как работает iOS GO.   -  person Greg Pettit    schedule 09.11.2011
comment
Только что понял, что это больше не проблема с новой iOS. Я не обновлял свой телефон, но он отлично работает с моим iPad, поэтому я предполагаю, что если я обновлю его, он будет работать нормально. Спасибо.   -  person Edward Glasser    schedule 09.11.2011


Ответы (3)


Добавление действия в форму может сработать или попробуйте добавить <input type="submit" /> в форму.

person Zorayr    schedule 13.08.2012

У вас может быть кнопка отправки, и в событии onclick кнопки отправки вы можете сделать это:

onClick="validate();return false;"

Затем в функции проверки верните true, если проверка прошла успешно.

person Animesh    schedule 22.05.2012

Попробуй это:

$("html").off("keypress").on("keypress", function (e) {
    var which = e.which,
    keyCode = e.keyCode;
    if (((which && which === 13) || (keyCode && keyCode === 13))) {
        e.preventDefault();
            //Submit your stuff here.
    }
});
person Chris Horsefield    schedule 07.08.2013