【问题标题】:Bug in a delete button in JSF pageJSF 页面中删除按钮中的错误
【发布时间】:2012-05-22 21:50:29
【问题描述】:

我正在尝试使用删除按钮实现 JSF 表。这是显示对话框的 JavaScript:

function dialog(a){              
    $("<div />", {
        text: a
    }).dialog({        
        width: 600,
        buttons: {
            "Ok": function() { 
                $("#myHiddenButtonID").click();
                $(this).dialog("close"); 
            }, 
            "Cancel": function(event) { 
                $(this).dialog("close");
                event.preventDefault();
            } 
        }
    });

}

当用户从对话框中确认时,我使用第二个隐藏按钮删除行:

<!-- hidden button -->
<h:commandButton id="myHiddenButtonID" value="DeleteHiddenButton" action="#{bean.deleteSelectedIDs}" style="display:none">
    <f:ajax render="@form" execute="@form"></f:ajax>
</h:commandButton>

<!-- the button -->
<h:commandButton value="Delete">
    <f:ajax execute="@form" onevent="dialog('demo test')"></f:ajax>
</h:commandButton>

当我单击删除按钮时,会出现确认删除表行的对话框。然后我点击是没有任何反应。我想隐藏的按钮 id 是问题,但是当我尝试修复它时,什么也没有发生。未调用托管 bean 方法。

【问题讨论】:

标签: java javascript jsf jsf-2 jquery-dialog


【解决方案1】:

查看隐藏按钮上的萤火虫或查看源代码,查看其完整的 id,它可能带有一些前缀,如 form1ID:myHiddenButtonID 或其他前缀,如果是这种情况,你应该写一个更好的 id (form1ID :myHiddenButtonID 为例)

喜欢这个

$("#form1ID\\:myHiddenButtonID").click();

此外,您可以从该按钮中删除 style="display:none",然后手动单击它以查看其是否真正按预期运行...

你也可以试试Attribute Ends With Selector

喜欢这个

$('input[id$="myHiddenButtonID"]').click();

【讨论】:

  • 这是进入 HTML 页面的 id:id="form:myHiddenButtonID"。但是,当我以这种方式更改 JavaScript $("#form:myHiddenButtonID").click(); 时,对话框会冻结。当我单击“是”按钮时,我无法关闭它
  • 是否有任何其他“名称”,例如 id,我可以分配给隐藏按钮并从 JavaScript 调用它?
  • 试试 $('input[id$="myHiddenButtonID"]').click();并且您不需要在两个按钮中都有execute="@form",只在可见按钮中
  • 顺便问一下,这段代码$('input[id$="myHiddenButtonID"]').click();是如何工作的?
  • 用指向该特定 jQuery 选择器的链接编辑了我的答案,您最好删除可见按钮中的执行属性...
猜你喜欢
  • 2018-10-25
  • 1970-01-01
  • 1970-01-01
  • 2017-04-21
  • 1970-01-01
  • 1970-01-01
  • 2012-01-31
  • 2015-12-29
  • 2011-09-11
相关资源
最近更新 更多