有没有一种方式可以在运行验证程序后强制聚焦于第一个无效输入?就像这样:
$("input:invalid:first").focus();
或者
$("input:first:invalid").focus();
$("input:invalid:first").focus();
或者
$("input:first:invalid").focus();
您可以根据类选择您的输入,然后使用:first筛选器。
$('.error').filter(":first").focus()
如果您有表单选择器,则此方法可行。
调用此方法后,它将起作用。
form[0].checkValidity()
您可以这样称呼此
//var form = $(form);
//var form = $("#formId");
form.find(":invalid").first().focus();
在调用checkValidity时,浏览器将会向字段中添加样式":invalid",我相信您已经知道了这一点。因为您只需要将焦点放在第一个字段上,所以我们将使用"first then focus chained"。
可能有更好的方法来完成同样的功能,但这就是我采用的方法。
form.find()
导致Uncaught TypeError: form.find is not a function
。 - mrodo我认为不需要添加选择器,也可以在
document.querySelector('input:invalid')
它将匹配第一个无效输入(由required
,value
[,pattern
]决定)
$("#"+document.querySelectorAll(":invalid")[1].id).focus();
运行良好。但我不知道这是否是正确的方法?有什么想法吗? - A.Pourhadi