Отправка HTML-формы без кнопки отправки - PullRequest
3 голосов
/ 04 марта 2009

У меня есть такая форма:

<html> 
    <body> 
        <form onSubmit="alert('Just got submitted');">
            <p>
            Hello: <input class="field" type="text"/><br/>
            Goodbye: <input class="field" type="text"/><br/>
            </p>
        </form>
    </body> 
</html> 

, который в одном браузере успешно отправляется при нажатии пользователем клавиши ввода из одного из полей, а в другом браузере - нет. Как ни странно, если я удаляю второе поле, оно работает в обоих.

Мой вопрос на самом деле - нормально ли иметь форму без явного элемента отправки? Мне очень нравится это поведение.

Ответы [ 6 ]

6 голосов
/ 04 марта 2009

Отсутствие явной отправки - плохой пользовательский опыт. За последнее десятилетие ваш типичный конечный пользователь изучил набор принципов взаимодействия с веб-сайтами. А именно, вы можете переключаться между полями, вы можете выбрать много флажков, и у вас есть кнопка для фактической отправки данных.

В прошлом я пытался разрабатывать формы, которые автоматически обновляются с помощью JavaScript, и я получил бесчисленные жалобы от пользователей. Они хотели кнопку или они не верили, что она работает. Так что в этом конкретном случае я сохранил форму, как она работала изначально, но добавил кнопку отправки, которая действительно ничего не делала. Они были счастливы.

В наши дни я просто создаю свои формы с помощью обычных кнопок отправки. Мало того, что пользователи ожидают этого, но это позволяет значительно улучшить прогрессивное улучшение между браузерами, не поддерживающими JS.

2 голосов
/ 04 марта 2009

Конечно, более чем возможно иметь форму без элемента submit, особенно если вы используете события JavaScript для отправки формы. Я настоятельно рекомендую вам использовать событие onkeypress для обнаружения нажатия клавиши «ввод» вместо того, чтобы в зависимости от браузера просто принять клавишу «ввод», если вы создаете форму без отправки, чтобы сделать ее кросс-браузерной.

Тем не менее, я думаю, что это нехорошо, не указывать кнопку отправки. (Это не обязательно должен быть ввод типа «отправить», это может быть «кнопка» или изображение, по которому вы щелкаете.) Это просто стандарт, когда формы заполняются пользователем при помощи кнопки, и вы принимаете это далеко, что может запутать многих пользователей, которые привыкли к кнопке. Это определенно нарушает принципы Не заставляй меня думать , представляя альтернативную форму норме.

1 голос
/ 04 марта 2009

Это не очень хорошая идея. Вы сами указываете причину - она ​​работает не во всех браузерах. Кроме того, это не то, что люди ожидают, поэтому это может смутить людей.

0 голосов
/ 11 апреля 2009

Отправка формы для ввода с помощью jQuery?

Кроме того, я бы оставил кнопку в форме, но скрыл ее с помощью javascript ($ ('# submit'). Hide ()). Это означает, что если пользователь отключил скрипт или f.ex. использует другое устройство, он увидит способ отправки формы по умолчанию.

0 голосов
/ 04 марта 2009

Если вы хотите иметь две кнопки, которые генерируют два разных поведения при отправке. что вы можете так что-то в этом роде:

или вы можете поместить форму отправки внутри function1 () или function2 ()

0 голосов
/ 04 марта 2009

Зависит от того, что вы подразумеваете под «ок».

Если вы имеете в виду valid (x) html, то это совсем не проблема, но для пользователя это проблема удобства использования. Но это также зависит от целевой аудитории вашего сайта. Если это для тех, кто разбирается в технологиях, то это нормально.

Вы можете создать кнопку ввода следующим образом:

<input type="button" onclick("doSomething()") />

doSomething () будет функцией в Javascript, которая будет отправлять данные вашей формы в сценарий на стороне сервера. Таким образом, у вас не будет поведения отправки.

...