简体   繁体   English

POST 请求前的表单验证

[英]Form validation before POST Request

So I have 2 functions, one is a async function that is basically a HTTP Post Request, the other one is a form validation.所以我有两个功能,一个是异步 function 基本上是一个 HTTP 发布请求,另一个是表单验证。 I want the POST Request function to trigger only if the form validation function returns true.我希望 POST 请求 function 仅在表单验证 function 返回 true 时触发。 The form validation looks like this:表单验证如下所示:

regForm.addEventListener('submit', function(event){
  if (checkInputs()) {
    // trigger post request function
  }
})
function checkInputs() {
  const usernameValue = form.username.value.trim();
  const passwordValue = form.password.value.trim();
  const emailValue = form.email.value.trim();

  if (usernameValue === '') {
    // trigger another function that handles errors
   setError(form.username, 'Can\'t be blank');
  } else {
   // triggers function that handles success(color change, etc.)
   setSuccess(form.username);
  }

  if (passwordValue=== '') {
    // trigger another function that handles errors
   setError(form.password, 'Can\'t be blank');
  } else {
   // triggers function that handles success(color change, etc.)
   setSuccess(form.password);
  }
}

But this doesn't seem to work, it doesn't trigger the POST Request function.但这似乎不起作用,它不会触发 POST 请求 function。

It triggers, because you don't return anything from the checkInputs function.它会触发,因为您没有从 checkInputs function 返回任何内容。

You need to return boolean /true or false/.您需要返回 boolean /true 或 false/。

Something like:就像是:

function checkInputs() {
  const usernameValue = form.username.value.trim();
  const passwordValue = form.password.value.trim();
  const emailValue = form.email.value.trim();
  let check = true;
  if (usernameValue === '') {
    // trigger another function that handles errors
    setError(form.username, 'Can\'t be blank');
    check = false;
  } else {
    // triggers function that handles success(color change, etc.)
    setSuccess(form.username);
  }

  if (passwordValue=== '') {
    // trigger another function that handles errors
    setError(form.password, 'Can\'t be blank');
    check = false;
  } else {
    // triggers function that handles success(color change, etc.)
    setSuccess(form.password);
  }

  return check;
}

inside function checkInputs(), create a variable let check = true , assign false to this variable in every if statement:在 function checkInputs() 中,创建一个变量let check = true ,在每个 if 语句中将 false 赋给该变量:

if (usernameValue === '') {
  setError()
  check = false;
}

return check; at the end of function.在 function 的末尾。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM