Javascript 如何在服务器端验证后设置元素焦点-MVC 3

Javascript 如何在服务器端验证后设置元素焦点-MVC 3,javascript,jquery,asp.net-mvc-3,validation,Javascript,Jquery,Asp.net Mvc 3,Validation,大家早上好 出于这样或那样的原因,我在模型的下拉列表中有一层服务器端验证: public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) { if (SomethingVisible && DropDownListSelection == 0) { yield return new Validatio

大家早上好

出于这样或那样的原因,我在模型的下拉列表中有一层服务器端验证:

 public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (SomethingVisible && DropDownListSelection == 0)
        {
            yield return new ValidationResult("Please make a selection", new[] { "DropDownListSelectionId"});
        }
    }


<div class="editor-field">
                            @Html.DropDownListFor(x => x.DropDownListSelectionId, new SelectList(Model.DropDownListSelection, "DropDownListSelectionId", "DropDownListSelectionName"))
                            <br />
                            @Html.ValidationMessageFor(model => model.DropDownListSelectionId)
                        </div>
公共IEnumerable验证(ValidationContext ValidationContext) { if(SomethingVisible&&DropDownList选择==0) { 返回新的ValidationResult(“请进行选择”,new[]{“DropDownListSelectionId”}); } } @Html.DropDownListFor(x=>x.DropDownListSelectionId,新的SelectList(Model.DropDownListSelection,“DropDownListSelectionId”,“DropDownListSelectionName”))
@Html.ValidationMessageFor(model=>model.DropDownListSelectionId) 这工作得很好,并且显示了适当的验证错误!Model.IsValid。可爱

但是,由于一些这样的表单可能非常高(我知道,我知道,很讨厌),并且验证可能会丢失,即您必须向下滚动才能看到验证错误,因此有些人不喜欢滚动

因此,我想做的是使用jquery/javascript将焦点设置在经过验证的元素上,我将如何进行这项工作


我为这个厚颜无耻的问题道歉

在每次表单加载开始时,我通常做的事情是检查是否有任何具有“validation”类的元素,并将重点放在该类的第一次出现上。在大多数浏览器中,它应该自动滚动到焦点元素

$(function(){
    $('input, select, textarea').each(function(){
         if($(this).hasClass('input-validation-error'))
              $(this).focus();
    });
});