HTML5的input的required使用中遇到的问题及解决方法

本篇文章HTML5培训小编给读者们介绍一下HTML5的input的required使用中遇到的问题及解决方法,文中给大家介绍的非常详细,感兴趣的小伙伴就随小编来了解一下吧。

HTML5的input的required使用中遇到的问题及解决方法

问题描述:

在form表单提交的时候,有些input标签被隐藏,表单验证过程中会出现An invalid form control with name='' is not focusable 的错误,虽然我遇到的问题是我的input标签根本没有required属性,但是在该标签隐藏之前,(我的是使用tab栏切换)我输入了错误的格式,再隐藏,这时候他其实是错误的,会被form表单同样去验证,但是由于它被隐藏,浏览器获取不到焦点就会报错。

解决方法:

隐藏之前将该input的value值设置为空即可.我的input上面没有使用required属性。如果input含有display:none和required属性,也会产生该错误。

产生原因:

Chrome希望专注于需要但仍为空的控件,以便可以弹出消息“请填写此字段”。但是,如果控件在Chrome想要弹出消息的时候隐藏,即在提交表单时,Chrome无法关注该控件,因为它是隐藏的,因此表单不会提交。

解决方法如下:

1、隐藏时,将required属性删除

selector.removeAttribute("required")

2、没有使用required的话,或许是由于button按钮,类型未设置造成。设置<button type="button">

3、form表单不验证,即添加novalidate属性。(不是最终解决办法)<form novalidate></form>

4、既然是由于使用了display:none造成,同样的visibility: hidden 也会造成问题,那就不使用。通过可以设置css样式opacity: 0;

5、禁用此表单控件。 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.
});

要了解更多关于HTML5开发方面内容的小伙伴,请关注扣丁学堂HTML5培训官网、微信等平台,扣丁学堂IT职业在线学习教育有专业的HTML5讲师为您指导,此外扣丁学堂老师精心推出的HTML5视频教程定能让你快速掌握HTML5从入门到精通开发实战技能。扣丁学堂H5技术交流群:673883249。

H5基础课程:https://ke.qq.com/course/320523?flowToken=1008606【扫码进入HTML5前端开发VIP免费公开课】

JavaVIP课程:https://ke.qq.com/course/308771?taid=3521851708192291【扫码进入JavaEE/微服务VIP免费公开课】

注:点击(了解更多)进入课程直播间

相关推荐