jQuery event.preventDefault()不适用于h:commandLink

时间:2013-01-03 11:06:57

标签: jquery jsf richfaces spring-webflow

当用户点击取消链接时,我想将jQuery对话框显示为conformation-popup。 ("你真的想取消吗?")

jQuery(#{rich:element('cancel')}).click(function(event) {
    var dialog = jQuery(#{rich:element('cancelDialog')});
    if (dialog.is(':visible')) {
        jQuery(#{rich:element('cancelDialog')}).dialog('close');
    }
    else {
        jQuery(#{rich:element('cancelDialog')}).dialog('open');
        event.preventDefault();
    }
});
<h:commandLink action="cancel" immediate="true" id="cancel" value="cancel" />

对话框正在打开,但事件未被取消( - &gt;取消事件已进行)。当我使用h:commandButton时,它可以工作,但客户希望将其作为链接。

我使用JSF 2.0(MyFaces),jQuery 1.6.1,Spring Webflow 2.3.0.RELEASE和JSF Framework Richfaces 4.0.0.FINAL。有谁知道这些框架的解决方案?我无法使用其他框架。

谢谢你, 帕特里克

2 个答案:

答案 0 :(得分:1)

在函数中使用return false而不是event.preventDefault()

要详细了解差异:The difference between ‘return false;’ and ‘e.preventDefault();’

EDITED

由于它仍然不起作用,我建议使用onmousedown事件而不是click,具有相同的功能。 JSF h:commandLink and onclick events

答案 1 :(得分:0)

我会这样做:

jQuery(#{rich:element('cancel')}).bind('click', function(event) {
    event.preventDefault();
    var dialog = jQuery(#{rich:element('cancelDialog')});
    var action = (dialog.is(':visible')) ? 'close' : 'open';
    dialog.dialog(action);
});

其实我不会因为(a)我会使用jQuery 1.7+和(b)我不会使用JSF / Spring。