h: commandLink и функция Javascript onclick - PullRequest
0 голосов
/ 18 октября 2011

У меня есть следующий код:

<DIV>
    <h:commandLink action="#{documentGen.generatePDF}"
        target="_blank"
        onclick="return checkSelected();">
        <h:graphicImage url="/images/pdf.jpg"
        styleClass="pdfimage" title="Click to show PDF"></h:graphicImage>
    </h:commandLink>
</DIV>

Это выше помещено в таблицу, где пользователь может поставить галочки и щелкнуть вышеуказанную команду linkLink, которая предназначена для открытия нового окна и отображениясодержимое, сгенерированное бэканом #{documentGen.generatePDF}.

. Это работает, как и ожидалось, если i DON'T включает onclick="return checkSelected();".Если я включу его, то бэк никогда не вызывается, вместо этого я получаю новое окно, которое является дубликатом текущего.

Мне нужна эта функция JavaScript, чтобы проверить, что пользователь хотя бы установил 1 флажок, и в противном случае отобразить предупреждение.Функция Javascript работает нормально, и я вижу предупреждение, если не отмечен ни один флажок при щелчке commandLink.

Мой вопрос: почему onclick строка портит то, что делает commandLink?Что я делаю неправильно?

ОБНОВЛЕНИЕ :

h:commandLink находится внутри h:form.Как упомянуто выше, ссылка на команду работает как положено БЕЗ onclick=.....

Чтобы проверить, я изменил функцию javascript, вызываемую на onclick, на:

function testFunc() {
        alert("GOT Here!")
        return ture;
 }

и в командной строке нажмите на: onclick="return testFunc();"

В результате я получаю предупреждение"Иди туда!"но, как и прежде, новое окно дублирует текущее окно, и backbean не вызывается.Удаление строки onclick исправляет результат (но для этого нужно установить функцию javascript для проверки наличия флажков).

В представлении исходного кода браузера разница между командной ссылкой без onclik и с onclick выглядит следующим образом:

  <a href="#" onclick="return oamSubmitForm('genView','genView:_idJsp33','_blank',[]);" id="genView:_idJsp33" target="_blank"><img src="/images/pdf.jpg" title="Click for Pdf Document" class="pdfimage"></a>


  <a href="#" onclick="return testFunc();;return oamSubmitForm('genView','genView:_idJsp33','_blank',[]);" id="genView:_idJsp33" target="_blank"><img src="/images/pdf.jpg" title="Click for Pdf Document" class="pdfimage"></a>

Любая помощь будет оценена.Спасибо

Ответы [ 2 ]

5 голосов
/ 18 октября 2011

Проблема в том, что вы всегда возвращаетесь.Я думаю, что вам нужно только вернуть false, если необходимо, и продолжить в противном случае.

Так что измените ваш onclick на

onclick="if (checkSelected()) { return false; }"

Это наверняка проблема с представленной Ajaxформы, потому что представить никогда не вызывается, если вы вернетесь раньше.Я могу себе представить, что это учитывается и для стандартных отправляемых форм.

0 голосов
/ 18 октября 2011

Если вы вернете false в событии onclick для commandLink, форма не будет отправлена ​​

...