jquery 如何通过同一个按钮验证HTML表单并调用JS函数?如果没有,如何正确设置?

watbbzwu  于 2023-06-05  发布在  jQuery
关注(0)|答案(1)|浏览(146)

我试图在我的HTML表单中使用必需的和模式。表单的submit按钮在documentready上附加了一个函数,该函数隐藏new-guest div并显示qr生成的div。此功能附加到所有页面显示按钮。还有一个在提交时附加到表单的函数,用于处理表单中的信息。目前,当我单击submit按钮时,它会隐藏new-guest div,尽管输入没有填写或无效。我觉得在为这个表单编写更具体的函数之前,我可以做一个最小的修改。有什么建议吗?

<div class="container p-4 view" id="new-guest">
    <!-- when making a form, always start with form class, form-floating is a bootstrap class -->
    <form class="form-floating" method="post" id="infoform">
      <!-- each form-floating div holds a label and the input you want to take in -->
      <div class="form-floating">
        <!-- type is self explanatory, form-control is bootstrap class, placeholder is for the animation to work, required is self explanatory -->
        <input type="text" class="form-control" id="firstName" name="firstName" placeholder="lionel" required><br><br>
        <label for="firstName">First Name</label>
      </div>
      <div class="form-floating">
        <input type="text" class="form-control" id="lastName" name="lastName" placeholder="messi" required><br><br>
        <label for="lastName">Last Name</label>
      </div>
      <div class="form-floating">
        <input type="tel" class="form-control" id="phoneNumber" name="phoneNumber" pattern="[0-9]{10}" placeholder="idk"
          required>
        <label for="phoneNumber">Phone Number</label>
        <small>Format: 1234567890</small><br><br>
      </div>
      <button type="submit" page-show="qr-generated" class="btn btn-primary" value="Submit">Submit</button>
    </form>
  </div>
//function attached to buttons to change div currently viewable
    <script>
      $(document).ready(function (e) {
        showView("home");
        function showView(viewName) {
          $('.view').hide();
          $('#' + viewName).show();
        }
        $('[page-show]').click(function (e) {
          var viewName = $(this).attr('page-show');
          showView(viewName);
        });
      });
    </script>
async function submitForm(e) {
        // Get form values
        e.preventDefault();
        var firstName = document.getElementById("firstName").value;
        var lastName = document.getElementById("lastName").value;
        var phoneNumber = document.getElementById("phoneNumber").value;
....
}
var form = document.getElementById("infoform");
form.addEventListener("submit", submitForm);
jtw3ybtb

jtw3ybtb1#

要验证HTML表单并通过同一按钮调用JavaScript函数,可以按如下方式修改代码:
1.将onsubmit属性添加到元素中,并将其设置为返回false;。这将防止单击按钮时自动提交表单。

<form class="form-floating" method="post" id="infoform" onsubmit="return false;">

1.修改submitForm函数以包含表单验证逻辑。如果表单有效,则可以调用所需的JavaScript函数。

async function submitForm() {
  // Get form values
  var firstName = document.getElementById("firstName").value;
  var lastName = document.getElementById("lastName").value;
  var phoneNumber = document.getElementById("phoneNumber").value;

  // Perform form validation
  if (firstName === "" || lastName === "" || phoneNumber === "") {
    // Display error message or perform any necessary validation logic
    alert("Please fill in all fields.");
    return;
  }

  // Call your JavaScript function
  yourFunctionName();

  // Optionally, you can submit the form programmatically
  // document.getElementById("infoform").submit();
}

1.更新button元素,以便在单击时调用submitForm函数。

<button type="submit" page-show="qr-generated" class="btn btn-primary" onclick="submitForm()">Submit</button>

通过这些更改,当单击“Submit”按钮时,将调用submitForm函数。它将执行表单验证,并在表单有效时调用所需的JavaScript函数。如果表单无效,它将显示错误消息或根据需要执行任何其他验证逻辑。

相关问题