Одним из возможных подходов является сохранение информации о том, имеет ли пользователь пароль, с использованием Shared Preference . Когда начинается действие, просто проверьте эту информацию и решите, какую страницу загрузить
Если у вас есть две ограничивающие рамки (то есть прямоугольники) с некоторой произвольной ориентацией (что, я полагаю, означает некоторое «вращение») затем я сделал бы следующее:
Когда вы нажимаете ввод на элементе управления вводом, браузер ищет первую кнопку отправки в этой форме и имитирует щелчок по ней. В случае нескольких кнопок первая будет нажата при вводе с клавиатуры (это ни в коем случае не написано на камне, и браузеры могут отклоняться от этого).
Если у вас есть две формы, та, которая получила нажатие клавиши, будет иметь это нажата первая кнопка отправки. Поэтому вам не нужно особой обработки этого. Вам просто нужно перестать мешать.
Вы можете смоделировать это в коде, в форме:
$( 'form' ).bind('keypress', function(e){
if ( e.keyCode == 13 ) {
$( this ).find( 'input[type=submit]:first' ).click();
}
});
Или в окне (для демонстрации того, что примерно происходит):
$( window ).bind('keypress', function(e){
if ( $( e.originalTarget ).is( ':input' ) && e.keyCode == 13 ) {
$( e.originalTarget )
.closest( 'form' )
.find( 'input[type=submit]:first' )
.click();
}
});
Предполагая, конечно, что .preventDefault ()
не было вызвано для события.
Итог: Если у вас есть событие, вы можете угадать от него, от какого элемента оно пришло и, следовательно, к какой форме оно принадлежит. Даже в этом случае:
<input type="button" value="LOGIN" name="btnLoginOk" onclick="submit();">
Здесь submit ()
является глобальной функцией, но когда она вызывается, ее контекст ( this
) будет элементом, и вы можете сделать submit (e) {this.form.submit (); }
.
Приложение разработано таким образом, что нет кнопок отправки (как при вводе type = "submit"), и, вместо этого, дизайнеры пошли на обработку по клику.
Для меня это звучит так, как будто дизайнер не полностью понимает события DOM / формы и проходит долгий путь к проблеме. Другой вероятной причиной может быть то, что программа устарела и была разработана тогда, когда эти вещи были не такими стабильными или должным образом документированными, как сегодня.
Замените это:
<form action="/login/" method="POST">
[...]
<input type="button" value="LOGIN" name="btnLoginOk" onclick="submit();">
</form>
На это:
<form action="/login/" method="POST">
[...]
<input type="submit" value="LOGIN" name="btnLoginOk">
</form>
Затем добавьте ключевой обработчик для всех форм, которым это необходимо, который обнаруживает и подавляет ввод, если выполняется какое-то условие (для форм, для которых вы действительно хотите отключить это).
// for all forms that POST that have 2+ submit buttons
$( 'form[method=post]:has(:submit:eq(1))' ).bind('keydown', function(e){
// if target is an enter key, input element, and not a button
if ( e.keyCode == 13 && e.target.tagName == 'INPUT' &&
!/^(button|reset|submit)$/i.test( e.target.type ) ) {
return false; // kill event
}
});
Или еще лучше: используйте библиотеку проверки формы (или jQuery). плагин), который знает, как сделать это для вас.
Скрестив пальцы, это сработает
$(document).ready(function() {
var focussed_form;
$('input').focus(focus_form);
$('input').blur(unfocus_form);
$('textarea').focus(focus_form);
$('textarea').blur(unfocus_form);
$('select').focus(focus_form);
$('select').blur(unfocus_form);
$(document).keypress(function(e) {
if(e.keyCode == 13)
{
$(focussed_form).trigger('submit');
}
});
function focus_form(){
focussed_form = $(this).closest('form');
}
function unfocus_form(){
focussed_form = NULL;
}
});
Я не думаю, что вам нужен jQuery или javascript для этого. Вы действительно можете определить, по какой форме пользователь нажимает кнопку отправки, или даже по какой кнопке отправки нажимается (в случае, если в форме имеется более одной кнопки отправки).
Вот код, который вы бы использовали:
<form action="http://foo.com/uri" method="POST">
<input type="submit" name="action1a" value="add" />
<input type="submit" name="action1b" value="delete" />
</form>
<form action="http://foo.com/uri" method="POST">
<input type="submit" name="action2a" value="add" />
<input type="submit" name="action2b" value="delete" />
<input type="submit" name="action2c" value="someOtherAction" />
</form>
Затем для формы -при обработке скрипта, вы просто проверите имя кнопки отправки, например:
if (isset($_POST['action1a'])) ... // PHP syntax
В качестве альтернативы вы можете использовать изображения в качестве кнопок отправки, затем вы можете использовать одно и то же имя для всех кнопок отправки и просто проверить их значения: Вы также можете сделать это с помощью обычных кнопок отправки, если каждая кнопка имеет уникальный атрибут value
.
<form action="http://foo.com/uri?form=1" method="POST">
<input type="submit" name="action" value="add" />
<input type="submit" name="action" value="delete" />
</form>
<form action="http://foo.com/uri?form=2" method="POST">
<input type="submit" name="action" value="add" />
<input type="submit" name="action" value="delete" />
</form>