как установить фокус для элементов в приложении на основе пружины - PullRequest
0 голосов
/ 28 февраля 2012

У меня есть приложение Spring, где я проверяю все валидации в пользовательском классе валидатора Spring.

Моя форма содержит почти 15 полей. Если в последнем поле есть ошибка, как установить фокус на этом элементе.

Поддерживает ли пружинный тег это.Есть технические идеи?В настоящее время я отображаю свои сообщения об ошибках рядом с полями.

Ответы [ 3 ]

2 голосов
/ 28 февраля 2012

Можно использовать тег spring: bind , чтобы определить, имеет ли поле или весь объект модели ошибку и общее состояние объекта после обработки (отправки).

<spring:bind path="user.username">
    <input id="inputId" type="text" name="${status.expression}" value="${status.value}"/>
    <c:if test="${status.error}">
        <c:forEach items="${status.errorMessages}" var"error">
            <span class="field-error">${error}</span>
        </c:forEach>
        <script type="text/javascript">
            document.getElementById('inputId').focus();
        </script>
    </c:if>
</spring:bind>

Примечание:

  • Переменная status предоставляется тегом spring:bind.
  • Часть javascript будет фокусировать элемент, когда определенное поле имеет ошибки проверки.
1 голос
/ 18 февраля 2015

Вы можете установить автофокус на все поля, в которых есть ошибка, но ваш браузер будет только автоматически фокусироваться (и прокручиваться) на первое.

<spring:bind path="someFieldName">
  <input type="text" name="someFieldName" value="${status.value}" ${status.error?'autofocus="autofocus"':''} />
</spring:bind>

Здесь нельзя использовать <form:input /> пружины, поскольку он не работает с условными атрибутами.

0 голосов
/ 03 марта 2017

Я использовал это:

    <spring:bind path="*">
        <c:if test="${status.error}"> 
            <script type="text/javascript">
                window.onload = function(){
                    document.getElementById('${status.errors.fieldErrors[0].field}').focus();
                };
            </script>  
        </c:if>
    </spring:bind>

В случае ошибки он найдет первый fieldError и его идентификатор и установит фокус на этом элементе

забылскажем, что красота в том, что вам не нужно помещать этот код рядом с каждым входом.Достаточно одного раза на jsp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...