html5的input的required使用中遇到的问题及解决方法
form提交时隐藏input发生的错误
问题描述
在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. });
总结
以上所述是小编给大家介绍的h5的input的required使用中遇到的问题及解决方法,希望对大家有所帮助
上一篇: HTML5轻松实现全屏视频背景的示例
下一篇: 基于canvas的骨骼动画的示例代码
推荐阅读
-
Hadoop环境搭建过程中遇到的问题以及解决方法
-
win7 wamp 64位 php环境开启curl服务遇到的问题及解决方法
-
html5的input的required使用中遇到的问题及解决方法
-
Python中的Socket 与 ScoketServer 通信及遇到问题解决方法
-
Vue 项目中遇到的跨域问题及解决方法(后台php)
-
web.py在SAE中的Session问题解决方法(使用mysql存储)
-
Vue项目pdf(base64)转图片遇到的问题及解决方法
-
Mysql5.7中使用group concat函数数据被截断的问题完美解决方法
-
Mysql数据库从5.6.28版本升到8.0.11版本部署项目时遇到的问题及解决方法
-
ubuntu14.04 使用中遇到的问题及解决方法集锦