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 に答える