Отключение отправки формы кнопки «Перейти» в Android - PullRequest
0 голосов
/ 13 декабря 2011

Я почти завершил работу над веб-сайтом ASP.NET, используя jQuery Mobile. Я застрял на одном конкретном случае использования.

Сайт предназначен для поддержки Android, iPhone, BlackBerry и Windows Mobile, все функции прекрасно работают, за исключением одного конкретного случая использования.

Случай, когда пользователь вводит значение в одно из полей ввода и затем нажимает собственную клавишу Go / Enter. Я фиксирую это и добавляю соответствующее событие, щелкаю / нажимаю кнопку jquery.

function BindSubmit(textbox, button) {
    $(textbox).unbind().keypress(function (event) {
        var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
        if (keyCode == 13) {
            $(button).trigger('tap');
        }
    });
}

Это прекрасно работает на всех устройствах, кроме одного, Android. Телефон в конечном итоге отправляет всю форму вместо того, чтобы следовать сценарию использования. Перехват события onsubmit и возврат false также не работает. После некоторых копаний я обнаружил, что Отключение отправки формы кнопки «Перейти» в Android при использовании веб-просмотра .

Я надеюсь найти решение для стандартной веб-формы. Спасибо.

Ответы [ 2 ]

1 голос
/ 16 декабря 2011

Спасибо за помощь. Способ, которым мы решили это, - это привязка к событию form.submit и вызов сами mobile.changePage (). Затем после changePage () мы возвращаем false; Это препятствовало отправке полной формы и все еще позволяло jquery mobile завершать свои действия.

0 голосов
/ 13 декабря 2011

Попробуйте запустить $(button).trigger('click'). Это может быть лучшим, более кросс-платформенным способом отправки события.

Вам определенно следует попробовать протестировать его таким образом на телефоне Android и выяснить, когда и где произойдет сбой:

function BindSubmit(textbox, button) {
    console.log("BindSubmit()");
    $(textbox).unbind().keypress(function(event) {
        var keyCode = ...;
        console.log("Key pressed: " + keyCode + ", isEnter: " + keyCode == 13);
        if (keyCode == 13) {
            console.log("Enter key hit, triggering event.");
            ...;
        }
    });
}

Если у вас есть ссылка на нее, я с удовольствием протестирую ее на моем Nexus One для вас:)

...