Когда проверка завершается неудачно внизу, почему браузер отображается вверху страницы?

Я только что реализовал RequiredFieldValidatior с ValidationSummary, установив ValidationGroup.

Работает нормально, когда нажимаю соответствующую кнопку!

Но область просмотра изменяется и смещается вверху страницы, и мой результат проверки, а кнопка и т. Д. Остаются в самом низу страницы, что нехорошо.

Есть ли способ предотвратить это и позволить браузеру по-прежнему делать покупки в той же области после нажатия кнопки?

Дополнительное примечание: проверка не проходит на стороне клиента; так что никакого постбека не происходит. По сути, проверка не проходит, и область просмотра скользит вверху страницы.

3 ответа

Решение

В вашем RequiredFieldValidator есть возможность SetFocusOnError который затем переместит курсор к типу Textbox/input.

Затем в объявлении вашей страницы в верхней части страницы добавьте MaintainScrollPositionOnPostback="true"

<%@ Page MaintainScrollPositionOnPostback="true" %>

Вы можете добиться этого, добавив следующую директиву вверху вашей страницы:

<%@ Page MaintainScrollPositionOnPostback="true" %>

Я делал это раньше, чтобы установить фокус на элементе fist, который не проверялся при вызове валидации вручную:

//has to be called after Page_ClientValidate()
function ValidatorFocus()
{
    var i;
    for (i = 0; i < Page_Validators.length; i++)
    {
        if (!Page_Validators[i].isvalid)
        {
            document.getElementById(Page_Validators[i].controltovalidate).focus();
            break;
        }
    }
}
Другие вопросы по тегам