Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > submit по нажатию "Enter"


Автор: Burrr 3.3.2006, 21:13
У меня есть форма с 2-мя последовательно идущими клавишами type=submit:
Код

<input type=submit value="Сохранить">&nbsp;&nbsp;<input name=look_changes type=submit value="Предварительный просмотр">

При нажатии клавиши Enter в IE и FF срабатывает первый сабмит ("Сохранить"), а в Опере второй ("Предварительный просмотр").
Как сделать так, чтоб во всех браузерах всегда срабатывал только один сабмит по Ентеру (в данном случае мне нужен второй сабмит).
Если можно, то без отлова onPressKey.
smile

Автор: 12345c 3.3.2006, 22:31
 
Код
<form action=JsPrimeryCode-68a.php method=get><input name=intext value=eec>
<input name=Sohran type=submit value="Сохранить">&nbsp;&nbsp;<input name=look_changes type=submit value="Предварительный просмотр">
JsPrimeryCode-68a.php:
Код
<?    print_r  ($_GET);?>
Скрипт для демо - http://js2.ru/example/JsPrimeryCode-68a.htm

Что видим? Я вижу иную картину.
В FF1.06, Op7.54: Array ( [intext] => eec [Sohran] => Сохранить )
, в IE: Array ( [intext] => eec )

 по Ентеру. И передача имени кнопки, если щёлкнули по ней. В какой версии Оперы наблюдалась передача второй кнопки? 

Автор: Burrr 4.3.2006, 14:31
Цитата

В какой версии Оперы наблюдалась передача второй кнопки?

В Опере 7.23.

Так как всё-таки организовать сабмит по нажатию Enter на "Предварительный просмотр"?

Автор: 12345c 4.3.2006, 23:50
Поставить его Input раньше, чем первый инпут по коду страницы. Проверьте этот код в Опере 7.23 - может, он тоже станет корректно работать? Инпуты теперь ничем не различаются, только положением в коде. Если тоже вызовется второй, будет значить, что старая Опера выбирает последний из инпутов-сабмитов, когда все остальные наоборот. Если так, тогда для старых Опер поменяйте положение кнопок в коде, и обойдётесь без перехвата нажатий кнопки.

Автор: Burrr 5.3.2006, 10:23
К сожалению, положение кнопок менять нельзя, т-к это нарушает некоторые принципы привычного юзабилити (превью идет после сохранить), а те кому предназначен скрипт не согласятся на такое. smile

Автор: Ciber SLasH 5.3.2006, 12:24
2Burrr:
Оно:
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content='text/html; charset=windows-1251'>
<script type='text/javascript'>
var flag = false;
</script>
</head>

<body>
<form method="POST" onSubmit='if (flag) {alert("Юзер нажал на кнопарь \"Отправить\" !!"); flag = false} return false'>
<input type="text">
<input type="submit" value="Предпросмотр"><input type="submit" onClick='flag = true' value="Отправить">
</form>
</body>
</html>

Автор: 12345c 5.3.2006, 17:19
Burr: я предлагаю в коде заменить положение, а не на странице.

Автор: Burrr 6.3.2006, 09:36
Ciber SLasH, 12345c спасибо за помощь!
Задача решена.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)