Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何聚焦第一个输入?_Javascript_Jquery_Asp.net_Asp.net Mvc - Fatal编程技术网

Javascript 如何聚焦第一个输入?

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

我有一个ASP.NET MVC应用程序,我想把焦点放在出错的第一个字段上。提交时,如果最后一个字段出错,并且用户试图提交表单,则焦点将转到出错的最后一个字段,而不是第一个字段。我尝试了多个,包括以下内容:

$().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();