Как я могу выполнить JavaScript, прежде чем действие JSF <h:commandLink> будет выполнено? [дубликат]

Возможно, я не понял вопрос правильно, но не можете ли вы использовать keyup, если хотите захватить оба входа?

$("input").bind("keyup",function(e){
    var value = this.value + String.fromCharCode(e.keyCode);
});
11
задан Mr Lister 17 December 2015 в 11:45
поделиться

5 ответов

<h:commandLink id="myCommandLink" action="#{myPageCode.doDelete}">
    <h:outputText value="#{msgs.deleteText}" />
</h:commandLink>
<script type="text/javascript">
if (document.getElementById) {
    var commandLink = document.getElementById('<c:out value="${myPageCode.myCommandLinkClientId}" />');
    if (commandLink && commandLink.onclick) {
        var commandLinkOnclick = commandLink.onclick;
        commandLink.onclick = function() {
            var result = confirm('Do you really want to <c:out value="${msgs.deleteText}" />?');
            if (result) {
                return commandLinkOnclick();
            }
            return false;
        }
    }
}
</script>

Другие действия JavaScript (как проверка входа формы и т.д.) могли быть выполнены путем замены вызова к confirm() с вызовом к другой функции.

7
ответ дан 3 December 2019 в 03:06
поделиться

В JSF 1.2 можно указать onclick события.

Кроме того, другие библиотеки, такие как MyFaces или IceFaces реализуют "onclick" обработчик.

Что необходимо было бы сделать, затем просто:

<h:commandLink action="#{bean.action}" onclick="if(confirm('Are you sure?')) return false;" />

Примечание: Вы не можете просто сделать return confirm(...) поскольку это заблокирует остальную часть JavaScript в onClick событии от случая, который эффективно мешал бы Вашему действию произойти независимо от того, что возвращенный пользователь!

0
ответ дан 3 December 2019 в 03:06
поделиться

Можно все еще использовать onclick. Спецификация набора рендеринга JSF (см., Кодирует Поведение), описывает, как ссылка должна обработать его. Вот важная часть (что она представляет для onclick):

var a=function(){/*your onclick*/}; var b=function(){/*JSF onclick*/}; return (a()==false) ? false : b();

Так Ваша функциональная привычка быть переданным объект-событие (который не является надежным перекрестным браузером так или иначе), но возвращающий true закоротит представление.

1
ответ дан 3 December 2019 в 03:06
поделиться

Если Вы хотите выполнить что-то, прежде чем форма будет отправлена для подтверждения, например, попробуйте событие формы onSubmit. Что-то как:

myform.onsubmit = function(){confirm("really really sure?")};
0
ответ дан 3 December 2019 в 03:06
поделиться

Это никогда не работало на меня,

 onclick="if(confirm('Are you sure?')) return false;" />

но это сделало

onclick="if(confirm(\"Are you sure?\"))return true; else return false;"
0
ответ дан 3 December 2019 в 03:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: