简体   繁体   English

无法取消表单提交

[英]Unable to cancel form submit

I want to stop the form from submitting when the username is below 3 characters.当用户名少于 3 个字符时,我想停止提交表单。 I tried using return false but it didn't work.我尝试使用 return false 但它没有用。 Below is the code (didn't used return false in this one) I am a beginner so please give an easy explanation 😅下面是代码(这个没有用return false)我是初学者所以请给个简单的解释😅

    const messageElement = formElement.querySelector(".form__message");

    messageElement.textContent = message;
    messageElement.classList.remove("form__message--success", "form__message--error");
    messageElement.classList.add(`form__message--${type}`);
}

function setInputError(inputElement, message) {
  inputElement.classList.add("form__input--error");
  inputElement.parentElement.querySelector(".form__input-error-message").textContent = message;
};

function clearInputError(inputElement) {
    inputElement.classList.remove("form__input--error");
    inputElement.parentElement.querySelector(".form__input-error-message").textContent = "";
};

document.addEventListener('DOMContentLoaded', () => {
  const loginForm = document.querySelector("#login");
  const createAccountForm = document.querySelector("#createAccount");
  
document.querySelector("#linkCreateAccount").addEventListener("click", e => {
        e.preventDefault();
        loginForm.classList.add("form--hidden");
        createAccountForm.classList.remove("form--hidden");
    });
    
    document.querySelector("#linkLogin").addEventListener("click", e => {
        e.preventDefault();
        loginForm.classList.remove("form--hidden");
        createAccountForm.classList.add("form--hidden");
    });
    
    loginForm.addEventListener("submit", e => {
      e.preventDefault();
      
      setFormMessage(loginForm, "error", "Invalid Username/Password Combination");
    });
    document.querySelectorAll(".form__input").forEach(inputElement => {
      inputElement.addEventListener("blur", e => {
        if(e.target.id === "signupUsername" && e.target.value.length < 3 ) {

setInputError(inputElement, "Username must be atleast 3 letters in length");
        }
      });
      inputElement.addEventListener("input", e => {
            clearInputError(inputElement);
        });
    });
 });```

For me this always works:对我来说,这总是有效的:

 function check_form(form) { var ok = confirm("is it ok?"); return ok }
 <form onsubmit="return check_form(this)"> <input> <input type="submit"> </form>

Bonus: if you want to asynchronously check the form and only then submit, it goes like this:奖励:如果你想异步检查表单然后提交,它是这样的:

 function check_form(form) { setTimeout(function() { var ok = confirm("is it ok?") if (ok) { form.submit() } }, 100); }
 <form onsubmit="check_form(this); return false;"> <input> <input type="submit"> </form>

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

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