兼容-chrome-form提交必填项隐藏问题

chrome 报错 An invalid form control with name='' is not focusable

搜遍google baidu 给的答案是 把必填项required属性去掉
然后在提交之前写了个方法

 var allInput = jQuery("input");
    var allFlag = document.getElementsByTagName("*");
    for (var k = 0 ; k < allFlag.length ; k ++){
        if (allFlag[k].name == "" && allFlag[k].getAttribute("required") == "True") {
            allFlag[k].removeAttribute("required");
        }
    }

    saveSubmit();

但是不好使

1个回答

不是name=''的问题,是你的含有required属性的控件或者这个控件容器被隐藏起来了不可以见,导致包含required属性的控件无法获取焦点。

你必须要将这个控件或者父容器设置为可见的。如下面的就会报错。。你需要将text设置为可见的。

 <form onsubmit="return ck(this)"><input type="text" id="t" style="display:none" required /><input type="submit" /></form>

如果你不想将form中的控件内容呈现在页面上,给required 控件增加div容器,absolute定位,left和top设置为负值大点,就不会报错了,但是你这个不在视窗的区域必选要用js设置好值,要不提交不了表单


<form onsubmit="return ck(this)"><div style="position:absolute;left:-9999999px;"><input type="text" id="t"  required /></div><input type="submit" /></form>
hd_myc
hd_myc 回复showbo: 暂时可以这样写 但是去掉验证本来就是不对的..
5 年多之前 回复
showbo
支付宝加好友偷能量挖,胡杨等着我的招呼 回复hd_myc: allFlag[k].getAttribute("required") == "True"这个判断也有问题,如果你的required属性值不是"True",而是 其他的这个属性也是有效的,应该改为allFlag[k].getAttribute("required")!==null
5 年多之前 回复
hd_myc
hd_myc 回复showbo: 08~10年的代码
5 年多之前 回复
hd_myc
hd_myc 回复showbo: 对啊 本身就是个矛盾 我也是醉了~
5 年多之前 回复
showbo
支付宝加好友偷能量挖,胡杨等着我的招呼 回复hd_myc: 这个蛋痛。。隐藏控件起来干嘛?如果要隐藏你就不要加required,要不就会报错。。
5 年多之前 回复
hd_myc
hd_myc 回复showbo: 非常感谢您的回答,现在有一个问题是整个html是在后台拼的,很多方法中判断再设置display,required属性,这个有什么解决思路吗?
5 年多之前 回复
showbo
支付宝加好友偷能量挖,胡杨等着我的招呼 或者删除所有required属性, if ( allFlag[k].getAttribute("required") == "True") {..
5 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐