Введите форму отправки HTML без отправки

Я заменил type="submit" в своей форме на type="button", чтобы предотвратить отправку формы, когда пользователь нажимает ввод. Будет ли это препятствовать отправке формы во всех браузерах?


person bgcode    schedule 14.08.2010    source источник
comment
зачем это делать? может быть очень раздражающим для пользователя...   -  person darma    schedule 14.08.2010
comment
потому что: 1- они должны заполнить определенные поля, чтобы использовать отправку. 2- форма основана на токенах. Добавление ввода должно добавить токен, а не отправлять всю форму. так что это действительно полезно для пользователей   -  person bgcode    schedule 14.08.2010
comment
Это не умаляет того факта, что это плохая практика использования. Что вы должны сделать в этом случае, так это использовать Javascript, чтобы сделать и то, и другое.   -  person Yi Jiang    schedule 14.08.2010


Ответы (3)


Некоторые браузеры по-прежнему автоматически отправляются при нажатии клавиши ввода. Если вам действительно нужна какая-то функция, очевидная для этого, вы можете реализовать собственную фильтрацию с помощью обработчика событий onSubmit.

Затем вы можете принудительно отправить форму, фактически вызвав метод отправки из Javascript. Конечно, вам нужно будет установить определенный флаг, чтобы ваша отправка прошла через это время. Что-то вроде (с jQuery)

//flag definition
var form_is_ready = false;

//event handler for the form submission
$('#your-form-id').submit(function() {
  if (!form_is_ready) {
    return false;
  }
});

//function you have to call to actually submit the form
function do_submit() {
  form_is_ready = true;
  $('#your-form-id').submit();
}

Это просто кусок кода, написанный на лету. Вы должны адаптировать его в соответствии с вашими потребностями.

person The Mighty Rubber Duck    schedule 14.08.2010

Это плохое решение для удобства использования, и его следует избегать.

person Delan Azabani    schedule 14.08.2010
comment
См. мой комментарий выше, объясняющий, почему имеет смысл не использовать ввод для отправки. - person bgcode; 14.08.2010
comment
@babonk это не имеет смысла и меня бы раздражало, если бы я пытался использовать твою форму - person Chris; 14.08.2010
comment
это может иметь смысл... особенно в очень нестандартной форме. При этом большинство форм, вероятно, должны использовать функции по умолчанию, когда это возможно. - person Jarrett; 05.09.2012