form提交時(shí)隱藏input發(fā)生的錯(cuò)誤
問(wèn)題描述
在form表單提交的時(shí)候,有些input標(biāo)簽被隱藏,表單驗(yàn)證過(guò)程中會(huì)出現(xiàn)An invalid form control with name='' is not focusable
的錯(cuò)誤
雖然我遇到的問(wèn)題是我的input標(biāo)簽根本沒(méi)有required屬性,但是在該標(biāo)簽隱藏之前,(我的是使用tab欄切換)我輸入了錯(cuò)誤的格式,再隱藏,這時(shí)候他其實(shí)是錯(cuò)誤的,會(huì)被form表單同樣去驗(yàn)證,但是由于它被隱藏,瀏覽器獲取不到焦點(diǎn)就會(huì)報(bào)錯(cuò)。
解決方法
隱藏之前將該input的value值設(shè)置為空即可.我的input上面沒(méi)有使用required屬性。
如果input含有display:none和required屬性,也會(huì)產(chǎn)生該錯(cuò)誤
產(chǎn)生原因
Chrome希望專(zhuān)注于需要但仍為空的控件,以便可以彈出消息“請(qǐng)?zhí)顚?xiě)此字段”。但是,如果控件在Chrome想要彈出消息的時(shí)候隱藏,即在提交表單時(shí),Chrome無(wú)法關(guān)注該控件,因?yàn)樗请[藏的,因此表單不會(huì)提交。
解決方法如下
1.隱藏時(shí),將required屬性刪除
selector.removeAttribute("required")
2.沒(méi)有使用required的話,或許是由于button按鈕,類(lèi)型未設(shè)置造成。設(shè)置<button type="button">
3.form表單不驗(yàn)證,即添加novalidate屬性。(不是最終解決辦法)<form novalidate></form>
4.既然是由于使用了display:none造成,同樣的visibility: hidden 也會(huì)造成問(wèn)題,那就不使用。通過(guò)可以設(shè)置css樣式opacity: 0;
5.禁用此表單控件。 disabled 這是因?yàn)橥ǔH绻汶[藏了表單控件,那是因?yàn)槟悴魂P(guān)心它的價(jià)值。所以這個(gè)表單控件名稱(chēng)值對(duì)在提交表單時(shí)不會(huì)被發(fā)送。
$("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.});
總結(jié)
以上所述是小編給大家介紹的h5的input的required使用中遇到的問(wèn)題及解決方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)VeVb武林網(wǎng)網(wǎng)站的支持!
新聞熱點(diǎn)
疑難解答