在form表单提交的时候,有些input标签被隐藏,表单验证过程当中会出现An invalid form control with name='' is not focusable
的错误css
虽然我遇到的问题是个人input标签根本没有required属性,可是在该标签隐藏以前,(个人是使用tab栏切换)我输入了错误的格式,再隐藏,这时候他实际上是错误的,会被form表单一样去验证,可是因为它被隐藏,浏览器获取不到焦点就会报错。浏览器
display:none
和required
属性,也会产生该错误Chrome但愿专一于须要但仍为空的控件,以即可以弹出消息“请填写此字段”。可是,若是控件在Chrome想要弹出消息的时候隐藏,即在提交表单时,Chrome没法关注该控件,由于它是隐藏的,所以表单不会提交。ui
selector.removeAttribute("required")
没有使用required的话,或许是因为button按钮,类型未设置形成。设置<button type="button">
this
form表单不验证,即添加novalidate属性。(不是最终解决办法)<form novalidate></form>
code
既然是因为使用了display:none
形成,一样的visibility: hidden
也会形成问题,那就不使用。经过能够设置css样式opacity: 0;
orm
disabled
这是由于一般若是你隐藏了表单控件,那是由于你不关心它的价值。因此这个表单控件名称值对在提交表单时不会被发送。$("body").on("submit", ".myForm", function(evt) { // Disable things that we don't want to validate. $(["input:hidden, textarea:hidden, select:hidden"]).attr("disabled", true); // If HTML5 Validation is available let it run. Otherwise prevent default. if (this.el.checkValidity && !this.el.checkValidity()) { // Re-enable things that we previously disabled. $(["input:hidden, textarea:hidden, select:hidden"]).attr("disabled", false); return true; } evt.preventDefault(); // Re-enable things that we previously disabled. $(["input:hidden, textarea:hidden, select:hidden"]).attr("disabled", false); // Whatever other form processing stuff goes here. });
若有其余更好方法,欢迎留言!ci
https://stackoverflow.com/questions/22148080/an-invalid-form-control-with-name-is-not-focusablerem