【问题标题】:Validate two different input fields in the same form using Javascript使用 Javascript 验证同一表单中的两个不同输入字段
【发布时间】:2018-01-05 07:54:47
【问题描述】:

我有一个表单,我在其中验证两个不同的字段,一个是税号输入字段,另一个是保险号码字段。 我编写了两个相应的函数来验证这些字段。如何为它们编写一个包装函数

税务字段验证功能

    validationofTaxIDField(e, formDataArray){
            console.log("WorkflowDisplay: validateTaxIDField: e", e, formDataArray);
            let alertError = false;
            if(formDataArray && formDataArray[0] && formDataArray[0]["1"] && formDataArray[0]["1"].taxInformation){
                const ti = formDataArray[0]["1"].taxInformation;
                console.log("ti", ti);
                if(ti.taxId){
                    if( !validateTIN(ti.taxId) ){ //taxID number
              alertError = true;
            }
                }
            }
            if(alertError){
          alert(customErrorMessages.invalidTaxId);
        }
        }

**Function for Insurance field Validation**
validationofSocialInsuranceField(e, formDataArray){
        console.log("WorkflowDisplay:validateSocialInsuranceField: e" , e, formDataArray);
        let alertError = false;
        if(formDataArray && formDataArray[0] && formDataArray[0]["2"] && formDataArray[0]["2"].insuranceDetails){
            const iid = formDataArray[0]["2"].insuranceDetails;
            console.log("WorkflowDisplay:validateSocialInsuranceField:iid", iid);
            if(iid.insuranceId){
                if( !validateSINo(iid.insuranceId) ){ //taxID number
          alertError = true;
        }
            }
        }
        if(alertError){
      alert(customErrorMessages.invalidInsuranceId);
    }
    }

现在,当我尝试验证时,即使我只是尝试验证保险字段,它总是会向我发出税务字段的警报。有人可以帮我在javascript中为他们俩编写一个包装函数。我可以在哪里收集两者的错误消息。如果您需要更多说明,请发表评论。现在我只需要将它们包装在一个函数中,如果它们存在,它将返回相应的错误消息。

【问题讨论】:

  • 是否缺少第二个函数 fields. ?第一个有那个
  • 你应该阅读这里不要做无用的代码medium.com/samsung-internet-dev/…
  • 我的问题可能要简单得多,如何使用 javascript 将两个不同的函数包装成一个并通过返回 true 或 false 来执行它们。

标签: javascript forms reactjs function validation


【解决方案1】:

就像你写了两个函数validateTIN and validateSINo,这两个函数返回布尔值。
同样,使您当前的函数,即validationofTaxIDField 和 validationofSocialInsuranceField 返回布尔值,通过时返回 true,失败时返回 false。

并使用这两个后面的函数,因为它们返回布尔值,您可以对它们进行 AND 并获得所需的验证!

validationofTaxIDField(e, formDataArray) {
    console.log("WorkflowDisplay: validateTaxIDField: e", e, formDataArray);
    let alertError = false;
    if (formDataArray && formDataArray[0] && formDataArray[0]["1"] && formDataArray[0]["1"].taxInformation) {
      const ti = formDataArray[0]["1"].taxInformation;
      console.log("ti", ti);
      if (ti.taxId && !validateTIN(ti.taxId)) {
        alertError = true;
      }
    }
    return alertError;
  }
  validationofSocialInsuranceField(e, formDataArray) {
    console.log("WorkflowDisplay:validateSocialInsuranceField: e", e, formDataArray);
    let alertError = false;
    if (formDataArray && formDataArray[0] && formDataArray[0]["2"] && formDataArray[0]["2"].insuranceDetails) {
      const iid = formDataArray[0]["2"].insuranceDetails;
      console.log("WorkflowDisplay:validateSocialInsuranceField:iid", iid);
      if (iid.insuranceId && !validateSINo(iid.insuranceId)) {
        alertError = true;
      }
    }
    return alertError;
  }

wrapper(e, formDataArray) {
  if (this.validationofTaxIDField(e, formDataArray) && this.validateSocialInsuranceField(e, formDataArray)) {
    //do some forward stuff
  } else {
    //show validation error on screen
  }
}

【讨论】:

  • 我对javascript很陌生。你能帮我一个代码sn-p吗?我们将为包装函数传递的参数是什么。谢谢。
  • 添加代码sn-p,如果你能得到它或有其他查询请告诉我
猜你喜欢
  • 1970-01-01
  • 2019-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-22
  • 1970-01-01
  • 2014-11-29
  • 1970-01-01
相关资源
最近更新 更多