Подтвердить что ты не робот

Проверка HTML5, когда тип ввода не "отправляет",

Я использую HTML5 для проверки полей. Я отправляю форму с помощью JavaScript на кнопку. Но проверка HTML5 не работает. Он работает только тогда, когда тип ввода submit. Можем ли мы сделать что-либо, кроме использования проверки JavaScript или изменения типа на submit?

Это код HTML:

<input type="text" id="example" name="example" value="" required>
<button type="button"  onclick="submitform()" id="save">Save</button>

Я представляю форму в функции submitform().

4b9b3361

Ответ 1

Процесс проверки формы HTML5 ограничивается ситуациями, когда форма отправляется через кнопку отправки. В алгоритме представления формы явно говорится, что проверка не выполняется, когда форма отправляется с помощью метода submit(). По-видимому, идея состоит в том, что если вы отправляете форму через JavaScript, вы должны сделать валидацию.

Однако вы можете запросить (статическую) проверку формы в отношении ограничений, определяемых атрибутами HTML5, с помощью метода checkValidity(). Если вы хотите отображать те же сообщения об ошибках, что и браузер в форме проверки HTML5, я боюсь, что вам нужно будет проверить все ограниченные поля, поскольку свойство validityMessage является свойством полей (элементов управления), а не формой, В случае одного ограниченного поля, как и в представленном случае, это, конечно, тривиально:

function submitform() {
  var f = document.getElementsByTagName('form')[0];
  if(f.checkValidity()) {
    f.submit();
  } else {
    alert(document.getElementById('example').validationMessage);
  }
}

Ответ 2

Возможно, я опаздываю, но способ, которым я это сделал, - создать скрытый ввод ввода и вызвать его обработчик клика при отправке. Что-то вроде (используя jquery для простоты):

<input type="text" id="example" name="example" value="" required>
<button type="button"  onclick="submitform()" id="save">Save</button>
<input id="submit_handle" type="submit" style="display: none">

<script>
function submitform() {
    $('#submit_handle').click();
}
</script>

Ответ 3

Вы должны использовать тег формы, вмещающий ваши входы. И введите тип submit.
Это работает.

<form id="testform">
<input type="text" id="example" name="example"  required>
<button type="submit"  onclick="submitform()" id="save">Save</button>
</form>

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

document.getElementById('testform').onsubmit= function(e){
     e.preventDefault();
}

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

Ответ 4

Попробуйте с помощью <button type="submit"> вы можете выполнить функциональные возможности submitform(), выполнив <form ....... onsubmit="submitform()">

Ответ 5

Работа по проверке HTML5 только Когда тип кнопки будет отправлен

изменить -

<button type="button"  onclick="submitform()" id="save">Save</button>

To -

<button type="submit"  onclick="submitform()" id="save">Save</button>

Ответ 6

Либо вы можете изменить тип кнопки на submit

<button type="submit"  onclick="submitform()" id="save">Save</button>

Или вы можете скрыть кнопку отправки, сохранить еще одну кнопку с типом = "button" и нажать на кнопку для этой кнопки

<form>
    <button style="display: none;" type="submit" >Hidden button</button>
    <button type="button" onclick="submitForm()">Submit</button>
</form>

Ответ 7

Попробуйте следующее:

<script type="text/javascript">
    function test
    {
        alert("hello world");  //write your logic here like ajax
    }
</script>

<form action="javascript:test();" >
    firstName : <input type="text" name="firstName" id="firstName" required/><br/>
    lastName : <input type="text" name="lastName" id="lastName" required/><br/>
    email : <input type="email" name="email" id="email"/><br/>
    <input type="submit" value="Get It!" name="submit" id="submit"/>
</form>

Ответ 8

Я хотел добавить новый способ сделать это, с которым я только недавно столкнулся. Несмотря на то, что проверка формы не выполняется, когда вы отправляете форму с помощью метода submit(), вам ничего не мешает вам щелкнуть кнопку отправки программно. Даже если он скрыт.

Имея форму:

<form>
    <input type="text" name="title" required />
    <button style="display: none;" type="submit" id="submit-button">Not Shown</button>
    <button type="button" onclick="doFancyStuff()">Submit</button>
</form>

Это приведет к проверке формы:

function doFancyStuff() {
    $("#submit-button").click();
}

Или без jQuery

function doFancyStuff() {
    document.getElementById("submit-button").click();
}

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

Здесь ОЧЕНЬ простой jsfiddle, показывающий концепцию:

https://jsfiddle.net/45vxjz87/1/