У меня есть HTML-форма в стиле мастера с рядом кнопок отправки для действий Назад / Далее / Отмена (в этом порядке). Форма также может содержать различное количество полей ввода, таких как текстовые поля, переключатели, флажки, раскрывающиеся списки (выбрать теги) и текстовые области. Клиент требует, чтобы кнопка «Далее» была действием по умолчанию, поэтому, если пользователь вводит текстовое поле и нажимает клавишу «Ввод», он должен отправить форму, как если бы он нажал кнопку «Далее».
Проблема в том, что в этом сценарии браузер (по крайней мере, IE, которым пользуются 99% наших клиентов) отправляет форму, используя первую кнопку, объявленную в форме, что, как видно из приведенного выше списка, «Назад», а не «Далее» по желанию.
Одно из исправлений, о которых я читал, - объявить кнопки «Назад» и «Далее» в обратном порядке (т. Е. Сначала «Вперед»), а затем использовать CSS для их правильного отображения, например:
<html>
<head>
<style type="text/css">
.formSubmitButtons {
direction: rtl;
float: left;
}
.formSubmitButtons input {
direction: ltr;
float: none;
}
</style>
</head>
<body>
<form action="blah" method="POST" enctype="application/x-www-form-urlencoded">
<div class="formSubmitButtons">
<input type="submit" name="btnNext" value="Next">
<input type="submit" name="btnBack" value="Back">
</div>
<input type="submit" name="btnCancel" value="Cancel">
<br/>Some text fields go here...
</form>
</body>
</html>
Это обеспечивает желаемое поведение и порядок кнопок как в Firefox, так и в IE, однако интервал между кнопками «Отмена» и другими не согласован. В IE6 это выглядит достаточно красиво, но в Firefox 3.0.5 кнопка «Отмена» зажата против кнопки «Далее».
Кто-нибудь знает, какую магию CSS мне нужно сплести, чтобы эти три кнопки равномерно распределялись в обоих браузерах?
(избежать проблемы путем сортировки кнопок Далее / Назад / Отмена не вариант)
(также спасибо всем, кто предложил решения на основе JavaScript, но не все наши клиенты допускают JS, поэтому это должно быть простое решение HTML и / или CSS)
Вот то, что я в итоге сделал, и это сработало (основываясь на предложении Клетуса):
<!--
<input type="submit" name="btnNext" style="position: absolute; left: -9999px" tabindex="-1">
<input type="submit" name="btnBack" value="Back">
<input type="submit" name="btnNext" value="Next">
<input type="submit" name="btnCancel" value="Cancel">
-->
(игнорируйте упаковочные теги комментариев, они просто так, чтобы вы могли видеть HTML)