js设置input的required,input标签中required

  js设置input的required,input标签中required

  提交表单时隐藏输入时出错

  问题描述

  提交表单时,某些输入标记被隐藏,并且在表单验证过程中将出现一个名为“”的无效表单控件不可聚焦错误。

  虽然我遇到的问题是我的输入标签根本没有需要的属性,但是在标签隐藏之前,(我用tab栏切换)我输入了错误的格式,然后隐藏了。这个时候他其实错了,也会被表单form类似的验证,但是因为是隐藏的,浏览器得不到焦点就会报错。

  解决方法

  在隐藏之前,只需将这个输入的值设置为null。我的输入没有使用所需的属性。

  如果输入包含display:none和required属性,也会生成此错误。

  产生原因

  Chrome希望将重点放在需要但仍为空的控件上,这样就可以弹出“请填写此字段”的消息。但是如果在Chrome想要弹出消息的时候,也就是提交表单的时候,控件是隐藏的,Chrome就无法关注控件,因为它是隐藏的,所以表单不会被提交。

  解决方法如下

  1.隐藏时,删除所需的属性。

  选择器。removeattribute(必选)2。如果没有使用required,可能是因为没有设置按钮的类型。设置按钮类型=button

  3.表单form不验证,即添加了novalidate属性。(不是最终解决方案)表单更新/表单

  4.既然是用display:none造成的,那么同样的visibility: hidden也会造成问题,所以不要用。可以设置css样式不透明度:0;

  5.禁用此表单控件。禁用这是因为通常如果你隐藏表单控件,那是因为你不关心它的值。因此,当提交表单时,不会发送该表单控件名称/值对。

  $(body )。打开(提交,)。myForm ,function(evt) {//禁用我们不想验证的东西。$([input:hidden,textarea:hidden,select:hidden])。attr(disabled ,true);//如果HTML5验证可用,让它运行。否则防止default . if(this . El . check validity!this.el.checkValidity()) { //重新启用我们之前禁用的东西。$([input:hidden,textarea:hidden,select:hidden])。attr(disabled ,false);返回true} evt . prevent default();//重新启用我们以前禁用的内容。$([input:hidden,textarea:hidden,select:hidden])。attr(disabled ,false);//无论其他表单处理的东西放在这里。});总结

  以上是在要求使用边肖引进的h5输入时遇到的问题和解决方案。希望对你有帮助。如果您有任何问题,请给我留言,边肖将及时回复您。非常感谢您对网站的支持!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: