Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Submit上验证此HTML/JavaScript表单?_Javascript_Html_Forms_Validation - Fatal编程技术网

如何在Submit上验证此HTML/JavaScript表单?

如何在Submit上验证此HTML/JavaScript表单?,javascript,html,forms,validation,Javascript,Html,Forms,Validation,我已经设法找出了如何在密码不匹配时发出“错误”警报,但这并不能阻止用户仍然提交表单。有人能解释一下,在允许用户使用onsubmit函数提交表单之前,我如何编写一条语句来检查所有内容是否返回true 请注意,我知道我没有编写一个名为validateForm的函数,该函数在表单的onsubmit HTML中有说明,我只知道在编写该函数时,它需要在那里 以下是指向JSFIDLE的链接: 下面是代码: HTML: JavaScript: var errorBox=document.getElementB

我已经设法找出了如何在密码不匹配时发出“错误”警报,但这并不能阻止用户仍然提交表单。有人能解释一下,在允许用户使用onsubmit函数提交表单之前,我如何编写一条语句来检查所有内容是否返回true

请注意,我知道我没有编写一个名为validateForm的函数,该函数在表单的onsubmit HTML中有说明,我只知道在编写该函数时,它需要在那里

以下是指向JSFIDLE的链接:

下面是代码:

HTML:

JavaScript:

var errorBox=document.getElementById("error");
var errorText=document.getElementById("error2");
var pass2=document.getElementById("password2");
var pass1=document.getElementById("password1");

pass2.onchange = function() {
if (pass2.value !== pass1.value) {
    pass2.style.border="2px solid red";
    errorText.innerHTML="Passwords do not match!";
    errorText.style.color="red";
    //errorBox.style.height="40px";
    //errorBox.style.visibility="visible";
    //errorBox.innerHTML="<p>Passwords do not match!</p>";
    return false;
}
else {        
    pass2.style.border="2px solid #B5DCF7";
    errorText.style.color="green";
    errorText.innerHTML="Passwords match!";
    return true; 
}
};

历史上,我曾使用过以下想法:

function validateForm() {
  var errors = 0;
  var form = document.getElementsByTagName('form')[0];

  /* 
   * Store appropriate form elements.
   * There are many ways to do this, but I'm keeping it 
   * simple for the example
   */
  var firstName = document.getElementById("firstName").value;
  var lastName = document.getelementById("lastName").value;
  // etc..

  // validate required fields
  if (firstName === "") {
    errors++;
  }

  if (lastName === "") {
    errors++;
  }

  // etc...

  return errors === 0;
}
您还可以使错误更加健壮

function validateForm() {
  var errors = [];
  var form = document.getElementsByTagName('form')[0];

  /* 
   * Store appropriate form elements.
   * There are many ways to do this, but I'm keeping it 
   * simple for the example
   */
  var fnElem = document.getElementById("firstName");
  var lnElem = document.getelementById("lastName");
  var firstName = fnElem.value;
  var lastName = lnElem.value;
  // etc...

  // validate required fields
  if (firstName === "") {
    errors.push({
      elem: firstName,
      message: "First name can't be blank"
    });
  }

  if (lastName === "") {
    errors.push({
      elem: lastName,
      message: "Last name can't be blanks"
    });
  }

  // etc...

  return errors.length === 0;
}

然后,您可以遍历错误并执行一些有用的操作。

防止表单提交的默认行为的最简单方法是让函数返回false。这将阻止表单提交

var onSumbitHandler = function(event){
    /* validate here */
    return false;
};
另一种技术上更好的方法是对作为参数传递给onSubmit函数的事件对象调用preventDefault。唯一的问题是一些旧版本的IE不支持此方法,因此您需要为这种情况提供一个后备方案:

var onSubmitHandler = function(event){
    /* validate here */
    if(event.preventDefault)
        event.preventDefault();
    else
        event.returnValue = false;
};
使用凉爽、全新的ish:

const setPasswordValidity==>{ const valid=pass2.value==pass1.value; 让el离开[pass1,pass2]{ 如果有效,el.setCustomValidity; else el.setCustomValidityPasswords不匹配!; } }; pass1.onchange=setPasswordValidity; pass2.onchange=setPasswordValidity; 设置密码有效性;
是的。

他们似乎没有使用jQuery。
var onSubmitHandler = function(event){
    /* validate here */
    if(event.preventDefault)
        event.preventDefault();
    else
        event.returnValue = false;
};