【发布时间】:2018-10-16 11:56:37
【问题描述】:
我在页面中实现了一个动态启用/禁用功能,这要归功于一个调用支持 Java bean 方法的 JavaScript 函数,该方法将布尔值设置为 true/false,然后用于禁用(或不禁用)primefaces commandLink 按钮。
一切正常,但我想知道是否可以在禁用按钮时保持常规外观而不是更改按钮的外观(甚至更好的是,在尝试单击它时打印一条警告消息而无需渲染另一个网络元素)。
以下是简化的代码:
Javascript 函数:
function enableSubmit(){
jQuery(element).click(function(){
if (condition){
rc_enable();
} else {
rc_disable();
}
});
}
还有primefaces commandButton和remoteCommands:
<p:remoteCommand name="rc_disable" update="submitButton" actionListener="#{mappenBean.setDisabled}" />
<p:remoteCommand name="rc_enable" update="submitButton" actionListener="#{mappenBean.setEnabled}" />
<h:commandLink id="submitButton" action="#{mappenBean.updateFund}" styleClass="FormButton" rendered="#{!sitzungBean.gedruckt}" disabled="#{!mappenBean.enabled}">
...[action listeners etc.]
<h:outputText value="Eingaben übernehmen" />
</h:commandLink>
java bean 函数只是将布尔值设置为 true 或 false。
如果单击禁用的按钮,我似乎无法实现 javascript click() 函数来显示警报,因为一旦禁用它就不再被识别。
primefaces 版本是 2.2.1(我知道...),JSF 是 2.1
欢迎任何帮助,非常感谢!
【问题讨论】:
-
是的,如果某些东西被禁用,你就不能点击它。不清楚你的问题到底是什么。因此,如果您不想禁用它,不如向它添加一个单击处理程序并取消事件并执行任何操作。
-
感谢您的回复。我可以实现一个单击处理程序来阻止调用 commandLink 按钮(以及所有操作侦听器)中指定的操作吗?
-
是的,您可以...在 clickhandler 中返回 false,就像在普通的 javascript/jquery-ui 中一样。你仍然可以做一个 javascript 'alert'
-
很好用。不过有一条评论:答案应该在答案中,而不是在问题的编辑中。请更正这一点。
-
但请记住,这是一种虚假且不安全的禁用方式。拥有浏览器开发工具的人可以轻松绕过这一点。 JSF 做所有这些服务器端的工作有一个非常好的和正当的理由(从不信任客户端)。反过来可能会更好。禁用它服务器端并通过css“启用”它可视化和可点击的客户端!!!
标签: javascript primefaces jsf-2