Использование OnChangeAjaxBehavior
на TextField
без каких-либо валидаторов и обновление TextField с помощью Ajax в методе onUpdate
приведет к такому поведению.
OnChangeAjaxBehavior
на TextField
работает следующим образом:
После того, как пользователь ввел что-то в TextField, Поведение выполнит Ajax запрос к серверу с этим вводом и запросит это для проверки этого ввода. Если он действителен, он вызовет метод onUpdate
, в противном случае он вызовет метод onError
.
Так что в вашем случае это приведет к следующему:
- Вы вводите 4 в TextField
- Wicket сделает Ajax Запрос и подтвердит, если 4 является допустимым вводом
- Поскольку это допустимый ввод, он вызовет ваш метод onUpdate
- Внутри метода onUpdate вы указываете wicket сделать ajax refre sh на Input / TextField
- Из-за этого Ajax обновление курсора внутри Input / TextField сбрасывается на первую позицию
Скорее всего, решение состоит в том, что OnChangeAjaxBehavior
не является правильным способом сделать то, что вы пытаетесь сделать. OnChangeAjaxBehavior
отлично работает для TextFields, которые имеют строгую проверку, например, для ввода для IBAN, где вы можете определить момент, когда пользователь завершил ввод с уверенностью, потому что допустимые вводы имеют фиксированную длину.
Если вы скажете нам, что именно вы пытаетесь архивировать, мы могли бы указать вам правильное направление архивирования с помощью калитки:
- Вы пытаетесь проверить ввод?
- Вы пытаетесь запретить пользователю вводить определенные значения в поле ввода / TextField?