Отправка поля формы - PullRequest
       4

Отправка поля формы

0 голосов
/ 05 ноября 2018

У меня есть HTML и JS, как бы я использовал эту форму в моем JS, поэтому, если одно из полей не введено, форма не отправляется и показывает мой оригинал , введите все поля, ошибка

Форма:

 <form id="myForm" action="http://www.eecs.yorku.ca/~mbrown/EECS1012/testForm.php" method="get">

HTML:

    <!doctype html>
    <html lang="en">
    <head>
      <title> Forms </title>
      <style>
        span {
          padding-left: 10px;
          display: block;
          float: left;
          width: 20%;
        }
        button { margin-left: 10px; }
        body {
          width: 80%; margin: auto; font-family: sans-serif;
          border: 1px solid black;
        }
      </style>
      <meta charset="utf-8">
      <script src="prototype.js"></script>
      <script src="forms.js"></script>
    </head>
    <body>
      <h1> Keyboard  Events and Form Submit </h1>
<!-- Form -->
      <form id="myForm" action="http://www.eecs.yorku.ca/~mbrown/EECS1012/testForm.php" method="get">
      <p> <span>Name:</span> <input id="input1" value="" placeholder="Enter Name" name="Name"></p>
      <p> <span>Id:</span> <input id="input2" value=""
      placeholder="Enter ID" name="ID"></p>
      <p> <span>Email:</span> <input id="input3" value="" placeholder="Enter Email" name="Email"></p>
      <p>
      <button id="submitButton" type="button"  onclick="submit()"> Submit </button>
      <button id="resetButton" type="button"  onclick="reset()"> Reset </button>
      </p>
      <p style="color:red" id="ErrorMessage"> </p>

    </body>
    </html>

JS:

function reset(){
  document.getElementById('input1').value = "";
  document.getElementById('input2').value = "";
  document.getElementById('input3').value = "";
  document.getElementById('ErrorMessage').innerHTML = "";
}

function submit(){
  var inp1 = document.getElementById('input1').value;
  var inp2 = document.getElementById('input2').value;
  var inp3 = document.getElementById('input3').value;
  if(inp1 == "" || inp2 == "" || inp3 == "")
  {
  document.getElementById('ErrorMessage').innerHTML = "Please enter all fields";
  }
  else{
  //do your code here
  document.getElementById('ErrorMessage').innerHTML = "";
  }
}

Ответы [ 4 ]

0 голосов
/ 05 ноября 2018

смените имя вашей функции submit() на другое, поскольку оно конфликтует со встроенной функцией JS, выполнение onclick="submit()" аналогично this.form.submit() или document.getElementById('myForm').submit();

function reset() {
  document.getElementById('input1').value = "";
  document.getElementById('input2').value = "";
  document.getElementById('input3').value = "";
  document.getElementById('ErrorMessage').innerHTML = "";
}

function checkSubmit() {
  var inp1 = document.getElementById('input1').value;
  var inp2 = document.getElementById('input2').value;
  var inp3 = document.getElementById('input3').value;
  if (inp1 == "" || inp2 == "" || inp3 == "") {
    document.getElementById('ErrorMessage').innerHTML = "Please enter all fields";
  } else {
    //do your code here
    document.getElementById('ErrorMessage').innerHTML = "submitting form";
    document.getElementById('myForm').submit();
  }

}
span {
  padding-left: 10px;
  display: block;
  float: left;
  width: 20%;
}

button {
  margin-left: 10px;
}

body {
  width: 80%;
  margin: auto;
  font-family: sans-serif;
  border: 1px solid black;
}
<h1> Keyboard Events and Form Submit </h1>
<!-- Form -->
<form id="myForm" action="https://www.eecs.yorku.ca/~mbrown/EECS1012/testForm.php" method="get">
  <p> <span>Name:</span> <input id="input1" value="" placeholder="Enter Name" name="Name"></p>
  <p> <span>Id:</span> <input id="input2" value="" placeholder="Enter ID" name="ID"></p>
  <p> <span>Email:</span> <input id="input3" value="" placeholder="Enter Email" name="Email"></p>
  <p>
    <button id="submitButton" type="button" onclick="checkSubmit()"> Submit </button>
    <button id="resetButton" type="button" onclick="reset()"> Reset </button>
  </p>
  <p style="color:red" id="ErrorMessage"> </p>
</form>
0 голосов
/ 05 ноября 2018

Вы можете просто использовать document.getElementById('myForm').addEventListener('submit', () => submit());

Но вам нужно изменить <button id="submitButton" type="button" onclick="submit()"> Submit </button> на <button id="submitButton" type="submit"> Submit </button> (как сказал Бармар), и вам также необходимо закрыть тег <form>.

0 голосов
/ 05 ноября 2018

После нажатия кнопки отправки вы можете выполнить итерацию по всем полям ввода, определить, имеют ли они атрибут required, а затем определить, является ли их значение пустой строкой (!field.value)

Мы помещаем это в блок try/catch, чтобы, если поле было required и не имело значения, мы могли выйти из цикла forEach, выдав ошибку и отобразив сообщение Please Enter All Required Fields

let submit = document.querySelector("button");

submit.addEventListener("click", submitFn);

function submitFn() {
  try {
    document.querySelectorAll("form input").forEach(function(field) {
      if (field.hasAttribute("required") && !field.value) {
        throw error("not all fields filled in");
      }
    });
    alert("all required fields filled in!")
  } catch {
    alert("please enter all required fields");
  }
}
<form>
  <label>first name </label><input required/>
  <br/>
  <label>last name</label><input required/>
  <br/>
   <label>email ( not required )</label><input />
  <hr>
  <button type="button">submit</button>
</form>

Примечание: Было бы лучше, если бы вы изменили тип кнопки отправки на submit и изменили событие с вышеуказанного кода с click на submit, но я не знаю, была ли причина для вашей разметки или нет, поэтому я оставляю это на ваше усмотрение.

0 голосов
/ 05 ноября 2018

Измените тип кнопки на «отправить» и выполните проверку в обработчике события onsubmit:

<form onsubmit="return validateMethod()" />

Переместите все свои логики проверки в validateMethod, верните false, если проверка не удалась.

Ниже приведен пример, но я думаю, что вы должны использовать для этого jquery lib:

function validateMethod(){
  var inp1 = document.getElementById('input1').value;
  var inp2 = document.getElementById('input2').value;
  var inp3 = document.getElementById('input3').value;
  if(!inp1 || !inp2 || !inp3)
  {
     document.getElementById('ErrorMessage').innerHTML = "Please enter all fields";
     return false;
  }
  else{
      //do your code here
      document.getElementById('ErrorMessage').innerHTML = "";
      return true;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...