HTMLFormElement.reportValidity()忽略“ display:none”输入字段

时间:2019-10-11 14:44:15

标签: javascript jquery html forms validation

我正在使用ajax调用发送表单。当用户使用表单中的“提交”按钮时,这将调用函数sendForm()。该函数阻止默认设置(提交表单),并验证表单(对于带有required的字段),如果表单有效,则进行ajax调用。

问题是表单包含一些隐藏的(display:none)元素,这些元素已通过resportValidity()调用进行了验证,因此该表单由于存在隐藏元素而失败,因此不应对其进行验证(它们根据先前的用户选项显示。)

在使用的sendForm()函数下面:

function sendForm(e) {
  $(e).preventDefault;

  var form = document.getElementById('myForm');

  if (form.reportValidity()) { 

      // form is valid, do ajax call..

  }else{

    alert("Form not valid");

  }
}

因此,当form.reportValidity()这样做时,由于required样式的输入中的输入字段为“空”,我得到了错误。

如何仅在没有display:none的情况下对表单元素进行reportValidity()? 谢谢!

1 个答案:

答案 0 :(得分:2)

如果在检查有效性时不希望元素包含在表单中,则应disable。设置display: none时,还应该添加disabled属性。

Documentation