Как программно вызвать событие клика? - PullRequest
1 голос
/ 27 сентября 2010

Я пытаюсь щелкнуть по кнопке «Разветвитель / Развернуть панель» с помощью javascript / jquery, но безрезультатно.

Вот пример разделителей: http://jdevadf.oracle.com/adf-richclient-demo/faces/components/index.jspx;jsessionid=GTYNMf7Mq2JD6L4v38yCdTh2HLplhJYLTGc1J1TjZFwmpZjcqh1n!-294683649?_afrLoop=28596129526428344&_afrWindowMode=0&_afrWindowId=null#%2Fcomponents%2FpanelSplitter.jspx%40

Как вы можете видеть, когда вы нажимаете маленькие кнопки со стрелками, регионы разрушаются. Если я пытаюсь получить элемент и щелкнуть по нему, ничего не происходит.

$("dmoTpl:innerVerticalSplitter::i").onclick()

Если я загружаю скрипт jquery и запускаю клик, тоже ничего не происходит. Я немного запутался, как все это работает и почему щелчки скрипта игнорируются. Есть идеи?

Ответы [ 5 ]

1 голос
/ 18 октября 2010

Я не использую JQuery, но вот пример, который работает с использованием vanilla javascript и тега <af:clientListener/>.

<?xml version='1.0' encoding='UTF-8'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:af="http://xmlns.oracle.com/adf/faces/rich" xmlns:f="http://java.sun.com/jsf/core">
  <af:resource type="javascript">
    function toggleSplitter(evt) {
        comp = evt.getSource().findComponent('ps1');
        if (comp) {
            comp.setProperty("collapsed", !comp.getProperty("collapsed"));
        }
        else {
            alert('not found');
        }
    }
  </af:resource>
  <af:panelStretchLayout id="psl1">
    <f:facet name="center">
      <af:panelSplitter id="ps1">
        <f:facet name="first">
          <af:outputText value="First" id="ot1"/>
        </f:facet>
        <f:facet name="second">
          <af:panelFormLayout id="pfl1">
            <f:facet name="footer"/>
            <af:commandButton text="Toggle" id="cb1" immediate="true">
              <af:clientListener method="toggleSplitter" type="click"/>
            </af:commandButton>
            <af:outputText value="Second" id="ot2"/>
          </af:panelFormLayout>
        </f:facet>
      </af:panelSplitter>
      <!-- id="af_one_column_stretched"   -->
    </f:facet>
  </af:panelStretchLayout>
</jsp:root>

перед кликом раскрывается:

alt text

и после клика свернуто:

alt text

0 голосов
/ 19 марта 2018

Для программного расширения / сворачивания af: panelBox создайте событие и программно поставьте его в очередь, как показано ниже.

Свернуть af: panelBox

DisclosureEvent discEvent = new DisclosureEvent(panelBoxCompObj, false);
discEvent.queue();

Расширить af: panelBox

DisclosureEvent discEvent = new DisclosureEvent(panelBoxCompObj, true);
discEvent.queue();
0 голосов
/ 26 ноября 2013

Вы можете использовать JQuery для запуска события на элементе. Рассмотрим приведенный ниже код, который запускает различные события.

$('#myElement').trigger('click');
$('#myElement').trigger('mousedown');
$('#myElement').trigger('touchstart');
0 голосов
/ 27 сентября 2010

Вместо того, чтобы пытаться создать событие щелчка, если вы знаете обработчик события, обычно лучше напрямую вызвать этот метод напрямую. Вот пример в jQuery.

Настройка обработчика событий

var clickEventHandler = function(event) {
  ...
};

$('#some-button').click(clickEventHandler);

Программный вызов позже

clickEventHandler();
0 голосов
/ 27 сентября 2010

Это click (), а не onclick () с jQuery, но когда я проверял ваш код $ не является jQuery Вы уверены, что на этой странице есть jQuery?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...