Как выполнить событие jQuery click () перед выполнением действия JSF <h: commandLink> или <h: commandButton>? - PullRequest
2 голосов
/ 28 апреля 2011

Пытаясь связать подтверждение щелчка с помощью jQuery (чтобы очистить код на странице JSF), я понимаю, что встроенная функция onclick (oamSubmitForm ();), написанная MyFaces, выполняется перед событием jQuery click (). Возможно ли вместо этого сделать jQuery click?

jQuery(".commandButtonConfirmDelete").click(function() {
  var answer = confirm('Confirm Delete?');
  return answer;
});  

<h:commandLink styleClass="commandButtonConfirmDelete" />
<h:commandButton styleClass="commandButtonConfirmDelete" />  

Ответы [ 2 ]

2 голосов
/ 28 апреля 2011

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

$(function() {
  var node = $('.commandButtonConfirmDelete').get(0),
      savedAction = node.onclick;

  //Remove the inline handler (we'll call it manually in our new handler)
  node.onclick = null;

  $(node).click(function() {
     //do something   

     //then call your inline action
     savedAction();
  });
});

Смотри эту скрипку - http://jsfiddle.net/C9HTp/1/

alert('bar') устанавливается в линию, а alert('foo') связывается через .click(). Однако, используя метод, описанный выше, предупреждения идут в порядке «foo», а затем «bar».

Надеюсь, это поможет!

0 голосов
/ 28 апреля 2011

Если вы можете работать с идентификаторами, вы можете использовать client-id для события click.

jQuery("#formId:commandButtonConfirmDelete").click(function() { var answer = confirm('Confirm Delete?'); return answer; });<br> <h:commandButton id="commandButtonConfirmDelete" />

...