JS验证函数跳过字段从中间开始

JS validation function skips over fields and starts in the middle

这是一个更长(25 个或更多)函数的一部分,但它让您了解正在发生的事情。看起来很简单,从第一个字段开始,验证它,如果失败,弹出警报并将光标定位在该字段中。

不幸的是,它跳过了前十几个字段并从 DateDue 字段开始并从那里向后工作。它也不会弹出警报消息。

代码在 JSHeader 中并从“提交”按钮调用。

对我做错了什么有什么想法吗?

function validate(){
var validatemsg;
var validateflag;
validateflag = 'false';

 if(document.forms[0].LocationName.value == ''){
 validatemsg='LOCATION NAME FIELD ERROR: Location Name is required to successfully process your request.';
 validateflag='true';
 document.forms[0].LocationName.focus()
 }
 if(document.forms[0].LocPhone.value == '') {
 validatemsg='LOCATION PHONE FIELD ERROR: Location Phone is required to successfully process your request.';
 validateflag='true';
 document.forms[0].LocPhone.focus()
 }
 if(document.forms[0].LocFax.value == '') {
 validatemsg='LOCATION FAX FIELD ERROR: Location Fax is required to successfully process your     request.';
 validateflag='true';
 document.forms[0].LocFax.focus()
 }

另外十几个字段的设置完全相同,然后

 if(document.forms[0].DateDue.value == '') {
  validatemsg='DATE DUE FIELD ERROR: Date Due is required to successfully process your request.';
  validateflag='true';
  document.forms[0].DateDue.focus()
 }
  if(document.forms[0].DateDue.value.length != 10) {
  validatemsg='DATE DUE FIELD ERROR: Date Due should be in mm/dd/yyyy format.';
  validateflag='true';
  document.forms[0].DateDue.focus()
  }

  if(document.forms[0].AgreeType.value == '') {
  validatemsg='AGREEMENT TYPE FIELD ERROR: AgreementType is required to successfully process your request.';
  validateflag='true';
  document.forms[0].AgreeType.focus()
  }

 if(validateflag == 'true'){
 alert(validatemsg);
 }
 if(validateflag == 'false'){
 document.forms[0].submit()
 }
 }

你需要把东西分开一点。因为您想在第一次验证失败时停止,所以您必须 return 退出 validate() 函数。

看看下面(我添加了评论),将 return 添加到您的每个 if 检查

// Declare these outside the function
var validatemsg;
var validateflag = false; /* don't use a string */

function validate(){
    if (document.forms[0].LocationName.value == ''){
        validatemsg = 'LOCATION NAME FIELD ERROR: Location Name is required to successfully process your request.';
        validateflag = true;
        document.forms[0].LocationName.focus();
        return; /* <-- Important, get out of the validator */
    }
    /*  add rest of if blocks from here down */
}

if (validateflag){
    alert(validatemsg);
}
if (!validateflag){
    document.forms[0].submit()
}