Такое поведение действительно нежелательно. Но MSIE как целого браузера по-своему тоже нет. Это то, с чем вам приходится иметь дело как веб-разработчику. Firefox / Chrome / Safari / и т. Д. Правильно пропускает событие размытия при наступлении события отправки.
Если ваша единственная цель - преобразовать / проверить someValue
, то вы должны делать это внутри обычного преобразователя и / или валидатора, а не внутри метода слушателя ajax.
<h:inputText id="test" value="#{myModel.someValue}">
<f:converter converterId="someValueConverter" />
<f:validator validatorId="someValueValidator" />
<f:ajax event="blur" execute="@this" listener="#{myBean.calculateStuff}" render="myText"/>
</h:inputText>
Таким образом, вы можете просто безопасно игнорировать «ненужные» запросы ajax.
Но если у вас действительно сильная голова, в вашем конкретном примере вы можете всегда добавлять обработчик onsubmit
, чтобы пропустить onblur
.
<h:form id="form" onsubmit="document.getElementById('form:test').onblur=null">