Пара вещей ...
Во-первых, если ваш CS JS возвращает false, тогда SS JS никогда не запускается (что удобно, когда вы хотите, чтобы пользователь подтвердил ...). Полагаю, с вами все будет в порядке, но вы можете вернуть true, чтобы быть в безопасности ....
Во-вторых, частичное refre sh, refre sh идентификаторов и частичное выполнение могут делать то, что может не быть тем, что вы ожидаете. Так что для теста я бы просто сделал полный refre sh и пропустил id.
На какой объект установлен обработчик событий?
Обычно я использую такие обработчики событий для ссылки или кнопки типа:
<xp:button value="Add zone" id="button2" styleClass="btn-xs btn-primary">
<xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="fields">
<xp:this.action><![CDATA[#{javascript:AssociationAdmin.createZone()}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
И это прекрасно работает: -)
Вот пример с подтверждением:
<xp:link escape="true" text="Delete" id="link5" styleClass="action" rendered="#{javascript:!AssociationAdmin.isCatchInfoInUse(row.getKey())}">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete" id="eventHandler5">
<xp:this.action><![CDATA[#{javascript:AssociationAdmin.removeCatchInfo(row.key);}]]></xp:this.action>
<xp:this.script><![CDATA[return window.confirm("Are you sure you want to delete these fields: #{javascript:row.getName()}?\n\nDeletion cannot be undone!!")]]></xp:this.script>
</xp:eventHandler>
</xp:link>
Дополнительные примечания:
Возможно, вы захотите отправить без проверки. Вы можете сделать это, добавив disableValidators="true"
к вашему обработчику событий
Пожалуйста, не забудьте иметь id
на контроле, где у вас есть ваш обработчик событий. Просто потраченный впустую вечер и утро на самое странное поведение, вызванное диалоговым окном открытия кнопок, НЕ имело и id
атрибута ...
Надеюсь, эти примеры помогут вам: -)
/ John