У меня есть эта форма в моем приложении, и я отправлю ее через AJAX, но я хочу использовать HTML5 для проверки на стороне клиента. Поэтому я хочу иметь возможность форсировать проверку формы, возможно, через jQuery.
Я хочу запустить валидацию без отправки формы. Является ли это возможным?
jquery
html
validation
razenha
источник
источник
Ответы:
Чтобы проверить, является ли определенное поле допустимым, используйте:
Чтобы проверить правильность формы, используйте:
Если вы хотите отобразить собственные сообщения об ошибках, которые есть в некоторых браузерах (например, Chrome), к сожалению, единственный способ сделать это - отправить форму, например так:
Надеюсь это поможет. Имейте в виду, что проверка HTML5 поддерживается не во всех браузерах.
источник
$myForm.submit()
на$myForm.find(':submit').click()
$('<input type="submit">').hide().appendTo($myForm).click().remove();
checkValidity()
, но в нем также есть опасная ошибка.checkValidity()
это то, что вызывает собственные сообщения об ошибках браузера, а не нажатие кнопки отправки. Если у вас есть прослушиватель событий, который прослушивает нажатие кнопки отправки, вы активируете его, когда выполняете `$ myForm.find (': submit'). Click ()`, который запускается сам и вызывает бесконечную рекурсию.Я нашел это решение работать на меня. Просто вызовите функцию JavaScript следующим образом:
action="javascript:myFunction();"
Тогда у вас есть проверка HTML5 ... очень просто :-)
источник
action="javascript:0"
на<form>
и связанноеclick
событии на<button>
доMyFunction()
и все работало замечательно. Я держу все JS вне HTML.MyFunction
Затем можно проверить,form.checkValidity()
чтобы продолжить.onsubmit()
почти всегда лучше, чем к кнопкеonclick()
, так как существуют другие способы отправки формы. (В частности, нажавreturn
клавишу.)action="javascript:myFunction();"
ни другоеaction="javascript:0"
больше не работает в последней версии Firefox (67). Работает на Chrome, хотя.от: проверка формы html5
источник
reportValidity
это поддерживается только на Chrome 40.0$("form")[0].reportValidity()
. Мне это нужно в случае, если проверка достоверности не удалась.код ниже работает для меня,
источник
reportValidity()
это лучшая функция для выделения обязательных полей.Вот более общий способ, который немного чище:
Создайте свою форму следующим образом (может быть фиктивной формой, которая ничего не делает):
Свяжите все формы, которые вы действительно не хотите отправлять:
Теперь предположим, что у вас есть
<a>
(в пределах<form>
), что при нажатии вы хотите проверить форму:Несколько заметок здесь:
checkValidity()
достаточно (по крайней мере, в Chrome). Если бы другие могли добавить комментарии с проверкой этой теории в других браузерах, я обновлю этот ответ.<form>
. Это был простой и гибкий способ получить решение общего назначения.источник
Может быть, опоздал на вечеринку, но все же каким-то образом я нашел этот вопрос, пытаясь решить подобную проблему. Поскольку никакой код с этой страницы не работал для меня, тем временем я нашел решение, которое работает как указано.
Проблема в том, что ваша
<form>
DOM содержит один<button>
элемент, который<button>
будет запущен, который автоматически получит форму. Если вы играете с AJAX, вам, вероятно, нужно запретить действие по умолчанию. Но есть одна загвоздка: если вы просто сделаете это, вы также предотвратите базовую проверку HTML5. Таким образом, рекомендуется не задавать значения по умолчанию для этой кнопки, только если форма действительна. В противном случае проверка HTML5 защитит Вас от отправки. jQuerycheckValidity()
поможет с этим:JQuery:
Описанный выше код позволит Вам использовать базовую проверку HTML5 (с сопоставлением типов и шаблонов) БЕЗ отправки формы.
источник
Вы говорите о двух разных вещах: «проверка HTML5» и проверка формы HTML с использованием javascript / jquery.
HTML5 «имеет» встроенные опции для проверки формы. Например, использование атрибута required в поле, что может (в зависимости от реализации браузера) отказать в отправке формы без использования javascript / jquery.
С javascrip / jquery вы можете сделать что-то вроде этого
источник
triggerHtml5Validation()
функцию. Приведенный выше код прикрепит событие отправки к вашей форме; при отправке вы перехватываете событие и подтверждаете форму. Если вы никогда не хотите отправлять форму, простоreturn false;
и отправка никогда не произойдет.return (valid) ? true : false
===return valid
. :)return valid
не возвращает false для нулевых / неопределенных значений. Но это на самом деле не имеет значения, в любом случае ответ был псевдокод, суть в том, что используйте return false, чтобы не отправлять форму ^^источник
Чтобы проверить все необходимые поля формы, не используя кнопку отправки, вы можете использовать функцию ниже.
Вы должны назначить обязательный атрибут для элементов управления.
источник
Вам не нужен JQuery для достижения этой цели. В вашей форме добавьте:
или в JavaScript:
В вашей
buttonSubmit
функции (или как вы это называете), вы можете отправить форму с помощью AJAX.buttonSubmit
будет вызван только если ваша форма проверена в HTML5.Если это кому-нибудь поможет, вот моя
buttonSubmit
функция:Некоторые из моих форм содержат несколько кнопок отправки, отсюда и эта строка
if (submitvalue == e.elements[i].value)
. Я установил значениеsubmitvalue
использования события клика.источник
У меня была довольно сложная ситуация, когда мне нужно было несколько кнопок отправки для обработки разных вещей. Например, Сохранить и Удалить.
Основанием было то, что это было также ненавязчиво, поэтому я не мог просто сделать его нормальной кнопкой. Но также хотел использовать проверку HTML5.
Также событие отправки было переопределено в случае, если пользователь нажал клавишу ввода, чтобы вызвать ожидаемую отправку по умолчанию; в этом примере сохранить.
Вот усилия по обработке формы, чтобы по-прежнему работать с / без javascript и с проверкой html5, с событиями submit и click.
одной рубрике
JavaScript
Предостережение в использовании Javascript заключается в том, что стандартный щелчок браузера должен распространяться на событие отправки ДОЛЖНО происходить для отображения сообщений об ошибках без поддержки каждого браузера в вашем коде. В противном случае, если событие click переопределено с помощью event.preventDefault () или вернет false, оно никогда не будет распространено на событие отправки браузера.
Следует отметить, что в некоторых браузерах не будет инициировать отправку формы, когда пользователь нажимает клавишу ввода, вместо этого она будет вызывать первую кнопку отправки в форме. Следовательно, существует console.log ('form submit'), чтобы показать, что он не запускается.
источник
jQuery
явно. Он отличается тем, что обрабатывает проверку HTML5 с помощью нескольких кнопок отправки и предотвращает отправку формы AJAX, если она недействительна. По умолчанию этоsave
действие, когда пользователь нажимаетenter
клавишу на клавиатуре. Что на момент моей публикации ни один из предоставленных ответов не был решением для нескольких кнопок отправки или захвата клавиши ввода, чтобы предотвратить передачу ajax.Вы можете сделать это без отправки формы.
Например, если форма отправки кнопки с идентификатором «поиск» находится в другой форме. Вы можете вызвать событие click для этой кнопки отправки и вызвать ev.preventDefault после этого. Для моего случая я проверяю форму B на основании формы A. Как это
источник
Этот способ хорошо работает для меня:
Добавьте
onSubmit
атрибут в свойform
, не забудьте включитьreturn
в значение.Определите функцию.
источник
не лучший ответ, но работает для меня.
источник
Я знаю, что на это уже ответили, но у меня есть другое возможное решение.
Если вы используете jquery, вы можете сделать это.
Сначала создайте несколько расширений в jquery, чтобы вы могли использовать их по мере необходимости.
Затем сделайте что-то вроде этого, где вы хотите использовать это.
источник
источник
Это сработало для отображения собственных сообщений об ошибках HTML 5 с проверкой формы.
Примечание: RegForm является
form id
.Ссылка
Надежда помогает кому-то.
источник
Это довольно простой способ заставить HTML5 выполнять проверку для любой формы, но при этом иметь современный контроль JS над формой. Единственное предостережение - кнопка отправки должна быть внутри
<form>
.HTML
JS
источник
Я думаю, что лучший подход
будет использовать плагин jQuery Validation, который использует лучшие методы для проверки форм, а также имеет хорошую поддержку браузера. Так что вам не нужно беспокоиться о проблемах совместимости браузера.
И мы можем использовать функцию validation validation ( jQuery ), которая проверяет, является ли выбранная форма действительной или все выбранные элементы действительны без отправки формы.
источник
В соответствии с вопросом, валидность html5 должна быть проверена сначала с помощью jQuery, и в большинстве ответов этого не происходит, и причина этого заключается в следующем:
при проверке с использованием функции формы HTML5 по умолчанию
мы должны понимать, что jQuery возвращает массив объектов, выбирая вот так
поэтому вам нужно указать первый индекс, чтобы функция checkValidity () работала
вот полное решение:
источник