3

大家早上好。

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

 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>

这工作得很好,而且在 !Model.IsValid 时会显示适当的验证错误。迷人的。

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

因此,我想做的是使用 jquery/javascript 将焦点设置在已验证的元素上,我将如何去做呢?

为厚厚的问题道歉。

4

2 回答 2

2
$(function(){
    $('input, select, textarea').each(function(){
         if($(this).hasClass('input-validation-error'))
              $(this).focus();
    });
});
于 2012-09-20T09:03:57.957 回答
0

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

于 2012-09-20T08:43:26.343 回答