【问题标题】:Trying to convert this big if else statement into a loop试图将这个大的 if else 语句转换为循环
【发布时间】:2020-03-23 16:27:08
【问题描述】:

您好,我正在尝试使这段代码更简洁。我与数组和循环斗争,不知道如何将其转换为循环。这是 html 页面上表单的 javascript,如果他们将字段留空,当他们点击提交时,它应该返回一个警告框,如果所有内容都正确提交,它应该与他们确认。还有一个 reg exp 用于可接受的邮政编码条目。

function validate() 
{
    var register = document.forms[0];
    if (register.fname.value === "") 
{
    alert("Please fill out your first name.");
    return false;
}
    else if(register.lname.value === "") 
{
    alert("Please fill out your last name.");
    return false;
}
    else if(register.address.value === "") 
{
    alert("Please fill out your address.");
    return false;
}
    else if(register.postal.value ==="")
{
    alert("Please enter a valid postal code.");
    return false;
}
    else if(!checkPostal(register.postal.value))
{
    alert("Please enter a valid postal code.");
    return false;
}
    else if(register.eAddress.value === "") 
{
    alert("Please fill out your email address.");
    return false;
}
    return confirm("Is the information correct?");
}


 //postal code regExp
 function checkPostal() 
{
    var myReg =  /^[A-Z]\d[A-Z] ?\d[A-Z]\d$/ig;
    return myReg.test(document.getElementById("postal").value);
}

【问题讨论】:

    标签: javascript html arrays forms for-loop


    【解决方案1】:

    如果你想减少 javascript,你可以把它变成一个纯 HTML 的解决方案:

    输入具有required attr ref

    此外,输入具有支持正则表达式的pattern attr ref

    这种解决方案让浏览器处理反馈

    <form>
      <label>first name: 
        <input type="text" name="fname" required
           minlength="1">
      </label><br/>
      <label>last name: 
        <input type="text" name="lname" required
           minlength="1">
      </label><br/>
      <label>postal code: 
        <input type="text" name="zip" required pattern="^[A-Z]\d[A-Z] ?\d[A-Z]\d$"
           minlength="1">
      </label><br/>
    
      <input type="submit" />
    </form>

    【讨论】:

      【解决方案2】:

      将您的消息设置为表单每个元素的属性,如下所示:

      <form method="POST" action="submit.php">
          <input id="item1" type="text" value="" data-message="My error message" data-must="true">
          ...//do the same for other elements...
      </form>
      

      现在循环如下

      var elements = document.forms[0].elements;
      
      for (var i = 0, element; element = elements[i++];) {
          if (element.getAttribute("must") && element.value === ""){
              alert(element.getAttribute("message"));
              return false;
          }
      } 
      return confirm("Is the information correct?");
      

      【讨论】:

        【解决方案3】:
        $.each( $( "#input input" ), function( key, element ) {
          if( !$(element).val() ) {
            $( "#error" + key ).text( "Input " + $( element ).attr( "name" ) + " is required");
            return false;
          }
        });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-04-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-28
          • 1970-01-01
          相关资源
          最近更新 更多