名称=''的无效表单控件不可聚焦
我的网站存在严重问题。 在谷歌浏览器中,有些客户无法进入我的付款页面。 当试图提交表单时,我得到这个错误:
An invalid form control with name='' is not focusable.
这是来自JavaScript控制台。
我读到,问题可能是由于隐藏的字段具有必需的属性。 现在的问题是我们正在使用.net webforms所需的字段验证器,而不是html5所需的属性。
谁会得到这个错误似乎是随机的。 有没有人知道这个解决方案?
陈述是不够的
将novalidate属性添加到表单将有所帮助
它没有解释问题,并且OP可能不知道为什么它会有帮助,或者它确实有帮助。
这是一个真正解释案例的答案,理解问题应该使您能够得出适合您开发的解决方案:
Chrome希望专注于需要但仍为空的控件,以便可以弹出消息“请填写此字段”。 但是,如果控件在Chrome想要弹出消息的时候隐藏,即在提交表单时,Chrome无法关注控件,因为它隐藏了,因此表单不会提交。
所以,为了解决这个问题,当一个控件被javascript隐藏时,我们也必须从该控件中删除'required'属性。
为了充分利用这个警告,考虑这一点 - 当验证失败时不要隐藏字段 。 但这不是一个严格的规定,也不是一个规则。 正如我在下面的评论中提到的那样,我解释了一下
在某些情况下,问题根本不是问题,并且不会导致应用程序功能的丢失。 那么错误可能会被忽略。
更新:2015年8月21日
有问题的错误也可能由于过早的验证而产生。 如果您有<button>
输入而没有设置类型属性,则可能会发生过早验证。 如果没有将按钮的type属性设置为按钮,则Chrome(或任何其他浏览器)会在每次单击该按钮时执行验证,因为submit是按钮的默认类型。 为了解决这个问题,如果你的页面上有一个按钮,除了提交或重置以外的其他事情,请记住这样做: <button type="button">
将novalidate
属性添加到表单将有助于:
<form name="myform" novalidate>
在你的表单中,你可能隐藏了需要属性的输入。
<input type="hidden" required />
因此表单不能关注那个元素,你required
从所有隐藏的输入中删除required
。