兼容-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();

但是不好使

不是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>