Разница между form.submit () и наличием ввода с типом «submit»

0

У меня есть HTML-страница, содержащая форму. Я хочу сделать некоторые поля "required". Проблема в том, что я не использую <input type="submit"> в своей форме, вместо этого я использую функцию Javascript для отправки формы, потому что мне нужно отправить Javascript-переменную на мой сервер. Вот мой код:

<form action="/toServer">
  Username: <input type="text" name="usrname" required>
  <input type="button" onclick="submitForm(this.form)" value="Submit">
</form>

var submitForm = function(frm){
    var qstNbr = document.getElementById('hiddenField');
    qstNbr.value = someJsVariable;
    frm.submit();
}

Итак, даже у меня есть required атрибут в моем входе, но форма все еще отправляется, даже если я ничего не вводил во вход.

Вот JSFiddle о том, как я хочу, чтобы моя форма вела себя при нажатии кнопки без ввода чего-либо.

Кто-нибудь знает, как form.submit() отличается от <input> type="submit"?

EDIT: после того, как пользователь2696779 ответит и немного изменит, вот окончательный рабочий код:

<form action="/toServer">
  Username: <input type="text" name="usrname" required>
  <input type="submit" onclick="submitForm(this.form)" value="Submit">
</form>

var submitForm = function(frm){
    if (frm.checkValidity()) {
    var qstNbr = document.getElementById('hiddenField');
    qstNbr.value = someJsVariable;
    frm.submit();
    }
}
  • 0
    оба сохраняются, но в form.submit () позволяют вам отправлять форму, используя javascript ... если вы хотите отправить форму без нажатия кнопки, то позвоните отправить через javascript
  • 0
    type = "submit" - это собственная форма HTML для отправки без JS. form.submit () - это способ отправки формы через JS, и для этого не требуется type = "submit", это также может быть type = "button", или вы можете отправить форму, даже если нажмете ссылку на своей странице.
Показать ещё 3 комментария
Теги:
forms

2 ответа

1
Лучший ответ

Отправка с помощью javascript не приведет к какой-либо проверке. Если вы хотите отправить с помощью обычной кнопки + javascript и все еще иметь валидацию, вы можете использовать функцию проверки HTML5 для проверки полей формы или всей формы.

Например, используя JQuery:

if(!$('form')[0].checkValidity()) {
    alert('not valid');
}
else {
    $('form').submit();
}

См. Скрипку для рабочего примера: http://jsfiddle.net/8Kmck/2/

2

Ваша текущая кнопка ввода HTML не является типом submit, это тип button. Поэтому requred атрибут вашего input элемента игнорируется. Чтобы изменить это, измените тип своей кнопки, чтобы submit:

<input type="submit" value="Submit">

Браузеры, которые поддерживают required атрибут, теперь будут отображать предупреждение при нажатии кнопки:

Изображение 174551

JSFiddle демо.

  • 0
    Не уверен, как это изображение получилось таким большим, извините за это!
  • 0
    Спасибо, я знаю это, это был тот же JSFiddle, которым я поделился выше. Что ж, в моем случае я должен отправить переменную javascript на свой сервер, поэтому я отправляю форму с функцией javascript, которая выполняется, когда пользователь нажимает кнопку. Если я изменю тип кнопки для submit я не смогу отправить переменную на свой сервер. Понял мою точку зрения?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню