У меня есть 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();
}
}
Отправка с помощью javascript не приведет к какой-либо проверке. Если вы хотите отправить с помощью обычной кнопки + javascript и все еще иметь валидацию, вы можете использовать функцию проверки HTML5 для проверки полей формы или всей формы.
Например, используя JQuery:
if(!$('form')[0].checkValidity()) {
alert('not valid');
}
else {
$('form').submit();
}
См. Скрипку для рабочего примера: http://jsfiddle.net/8Kmck/2/
Ваша текущая кнопка ввода HTML не является типом submit
, это тип button
. Поэтому requred
атрибут вашего input
элемента игнорируется. Чтобы изменить это, измените тип своей кнопки, чтобы submit
:
<input type="submit" value="Submit">
Браузеры, которые поддерживают required
атрибут, теперь будут отображать предупреждение при нажатии кнопки:
submit
я не смогу отправить переменную на свой сервер. Понял мою точку зрения?