为了账号安全,请及时绑定邮箱和手机立即绑定

完成必填字段后如何允许提交表单?

完成必填字段后如何允许提交表单?

慕森卡 2021-12-23 19:25:59
我已经完成了带有即时字段验证的代码,但也希望在字段没有值的情况下防止提交表单。我已经设法阻止提交表单,但是当我返回并提供一个值时,它仍然不允许它提交。知道我在这里做错了什么吗?这是 HTML:<form id="contactForm" action="https://formspree.io/xrggbejj" method="POST" onsubmit="return formValidation(contactForm);">  <div class="row">  <div class="col">    <label for="fName">First Name</label>  </div>  <div class="col">    <input type="text" id="fName" name="firstname" onblur="checkFirstName(firstName)" autofocus/>    <img src="../images/alert-icon.png" class="alert" id="firstNameMsg" alt="alert icon" width="40" height="35"/>  </div>  </div> <!-- End of row -->  <div class="row">  <div class="col">    <label for="lName">Last Name</label>  </div>  <div class="col">    <input type="text" id="lName" name="lastname" onblur="checkLastName(lastName)"/>    <img src="../images/alert-icon.png" class="alert" id="lastNameMsg" alt="alert icon" width="40" height="35"/>  </div>  </div> <!-- End of row -->  <div class="row">  <div class="col">    <label for="subject">Questions and/or Comments</label>  </div>  <div class="col">    <textarea id="subject" name="subject" onblur="checkSubject(subject)" style="height:200px"></textarea>    <img src="../images/alert-icon.png" class="alert" id="subjectMsg" alt="alert icon" width="40" height="35"/>  </div>  </div> <!-- End of row -->  <div class="row">    <input type="submit" value="SEND" />  </div> <!-- End of row --></form>
查看完整描述

2 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

的firstName,lastName和subject可变指向的输入不是他们的实际值的内侧。您可以将函数修改为


    function formValidation(contactForm) {


      if (!firstName.value || !lastName.value || !subject.value) {

        alert('Please fill out required fields.')

        event.preventDefault()

        return false;

      } else {

        return true;

      }

    }

在这里,我使用!运算符将输入转换True为空时,如果任何输入为空,则将评估第一种情况,否则您的函数将返回 true。


查看完整回答
反对 回复 2021-12-23
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

既然你这样做


if (firstName && lastName && subject !== true) {

  ...

}

我假设你希望这样做


 if (firstName.value === '') {

    alertStyle = document.getElementById('fName').style.border = '2px solid rgba(255, 6, 0)';

    alertImg = document.getElementById('firstNameMsg').style.display = 'inline-block';

    return false;

会做这样的事情


firstName = true

但它实际上并没有为firstName. 它只是返回真。


你可以有一个变量 like isValidand doisValid = true而不是在你的checkLastName() etc..


但是,既然你这样做


document.getElementById('lastNameMsg').style.display = 'none'

你可以做


function formValidation(contactForm) {


  if (document.getElementById('lastNameMsg').style.display !== 'none') {

    alert('Please fill out required fields.')

    event.preventDefault()

    return false;

  } else if (document.getElementById('lastNameMsg').style.display === 'none') {

    return true;

 }

}


无论如何,有多种方法可以简化,但希望这能让你继续前进:)


查看完整回答
反对 回复 2021-12-23
  • 2 回答
  • 0 关注
  • 216 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信