Javascript 如何聚焦第一个输入?
我有一个ASP.NET MVC应用程序,我想把焦点放在出错的第一个字段上。提交时,如果最后一个字段出错,并且用户试图提交表单,则焦点将转到出错的最后一个字段,而不是第一个字段。我尝试了多个,包括以下内容:Javascript 如何聚焦第一个输入?,javascript,jquery,asp.net,asp.net-mvc,Javascript,Jquery,Asp.net,Asp.net Mvc,我有一个ASP.NET MVC应用程序,我想把焦点放在出错的第一个字段上。提交时,如果最后一个字段出错,并且用户试图提交表单,则焦点将转到出错的最后一个字段,而不是第一个字段。我尝试了多个,包括以下内容: $().ready(function() { $("#Form").submit(function() { $('.input-validation-error').focus(); $(".input-validation-error").each(f
$().ready(function() {
$("#Form").submit(function() {
$('.input-validation-error').focus();
$(".input-validation-error").each(function() {
$(this).focus();
});
});
});
是否有任何解决方案,用户总是可以错误地转到第一个字段 无需在此处使用每个错误并循环所有错误。您只需将焦点设置为具有错误类输入验证错误的第一个元素,如下所示:
@Palash有一个很好的答案,但我会解释为什么您的代码不起作用,以便您理解它 在焦点设置为第一项后,您需要通过返回false离开循环,如下所示:
$(".input-validation-error").each(function () {
$(this).focus();
return false;
});
如果返回false,则指示jQuery停止处理其余元素。否则,它将继续循环,并最终聚焦最后一项。您可以使用eq方法
eq方法将匹配的元素集减少到一级
指定的索引
您正在使用InputValidationError类遍历每个元素,并对其调用focus。你以为会发生什么?如果您只想关注其中一个元素,为什么要遍历所有元素?仔细想想你的代码,想想它是否有意义。谢谢你的建议。如果焦点仍在最后一个错误上,则此解决方案不起作用。如果最后一个错误在焦点中,焦点仍转到最后一个错误。我正在尝试获取单击事件表单中的第一个错误。
$(".input-validation-error").each(function () {
$(this).focus();
return false;
});
$('.input-validation-error').eq(0).focus();