如何在执行JSF <h:commandlink>或<h:commandbutton>操作之前执行jQuery click()事件?</h:commandbutton> </h:commandlink>

时间:2011-04-28 13:56:01

标签: jquery jsf myfaces

尝试将点击确认与jQuery绑定(以清理JSF页面中的代码)我理解由MyFaces编写的onclick内联函数(oamSubmitForm();)在jQuery click()事件之前执行。可以在之前进行jQuery点击吗?

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

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

2 个答案:

答案 0 :(得分:2)

您最好的选择是检索内联点击事件,保存,删除它并使用您自己的功能覆盖它,执行您想要执行的操作并最终调用您删除的已保存功能。我会做这样的事......

$(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”的顺序排列。

希望这有帮助!

答案 1 :(得分:0)

如果您可以使用ID,则可以使用client-id进行点击事件。

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