在form表單提交的時候,有些input標籤被隱藏,表單驗證過程當中會出現An invalid form control with name='' is not focusable
的錯誤css
雖然我遇到的問題是個人input標籤根本沒有required屬性,可是在該標籤隱藏以前,(個人是使用tab欄切換)我輸入了錯誤的格式,再隱藏,這時候他實際上是錯誤的,會被form表單一樣去驗證,可是因爲它被隱藏,瀏覽器獲取不到焦點就會報錯。瀏覽器
display:none
和required
屬性,也會產生該錯誤Chrome但願專一於須要但仍爲空的控件,以即可以彈出消息「請填寫此字段」。可是,若是控件在Chrome想要彈出消息的時候隱藏,即在提交表單時,Chrome沒法關注該控件,由於它是隱藏的,所以表單不會提交。ui
selector.removeAttribute("required")
沒有使用required的話,或許是因爲button按鈕,類型未設置形成。設置<button type="button">
this
form表單不驗證,即添加novalidate屬性。(不是最終解決辦法)<form novalidate></form>
code
既然是因爲使用了display:none
形成,一樣的visibility: hidden
也會形成問題,那就不使用。經過能夠設置css樣式opacity: 0;
orm
disabled
這是由於一般若是你隱藏了表單控件,那是由於你不關心它的價值。因此這個表單控件名稱值對在提交表單時不會被髮送。$("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. });
若有其餘更好方法,歡迎留言!ci
https://stackoverflow.com/questions/22148080/an-invalid-form-control-with-name-is-not-focusablerem