Javascript TypeError:PF(…)。hide不是函数
我有一个简单的SSCCE:Javascript TypeError:PF(…)。hide不是函数,javascript,primefaces,Javascript,Primefaces,我有一个简单的SSCCE: <?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="h
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Test</title>
</h:head>
<h:body>
<p:panel id="button_panel" widgetVar="testPanel" closable="true" toggleable="true">
<h1>Testing</h1>
</p:panel>
<p:commandButton onclick="PF('testPanel').show()" value="Show Panel" type="button"/>
<p:commandButton onclick="PF('testPanel').hide()" value="Hide Panel" type="button"/>
</h:body>
</html>
测试时,
show()
是否会导致相同的错误?很可能不是。至少我在实验室测试的时候没有
所以我知道这个页面没有什么问题,只是调用了一些函数。有时,错误只是由于组件实际上没有您尝试调用的javascript函数而导致的
因此,我查看了(假设版本为6.2)并注意到面板有:
Ajax行为事件
面板提供用于切换和关闭功能的自定义ajax行为事件
已激发事件侦听器参数
在面板展开或折叠时切换org.primefaces.event.ToggleEvent。
当面板关闭时,关闭org.primefaces.event.CloseEvent。
没有隐藏(和显示)事件/javascript函数(它们通常是1:1)。因此,我尝试了close()
,结果成功了(正如show()
)
因此,文档并不完整,但您的问题可能已经在其中找到了(showcase中也有相应的示例!)
事实秀的close as对应(而非hide)或open可能(应该)是close的对应部分有些不一致。请在他们的github中为此创建一个问题。要在widgetvar上调用javascript函数,您必须这样做: PF('your_widgetvar_here').getJQ().show() 在Chrome的控制台中键入:PF('your_widgetvar_here'),然后输入一个句点,您将不会看到show()方法,但如果添加.getJQ(),则show方法将在那里
其他方法也一样,如click()--同样痛苦地出现在那里…..你能添加几个链接到你尝试过的东西并说明它们没有帮助的原因吗?省去了我们太多的调查。如果你键入
PF('widgetVar'))
在浏览器开发人员控制台中?你看到了什么?你确定html是由xhtml生成的吗?标题不同?更新了标题,并在问题底部的评论中给出了问题的答案。此外,我还尝试过将面板和按钮包装成h:形式,这没有什么区别。太棒了-非常感谢!我有了复印机d使用另一个示例中的代码,而不是直接使用API文档,这是我的错误。不客气。文档和showcase的存在是有原因的。可能并不总是100%,但绝不是更少……不……这不是真的。小部件上的函数是PrimeFaces函数,并且执行与jq函数完全不同的操作。是的,你会得到调用不存在的函数时也会出现同样的错误,但OP所说的是PrimeFaces函数
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="j_idt2">
<link type="text/css" rel="stylesheet"
href="/AnnotateImages/javax.faces.resource/theme.css.xhtml?ln=primefaces-aristo" />
<link type="text/css" rel="stylesheet"
href="/AnnotateImages/javax.faces.resource/fa/font-awesome.css.xhtml?ln=primefaces&v=6.2" />
<link type="text/css" rel="stylesheet"
href="/AnnotateImages/javax.faces.resource/components.css.xhtml?ln=primefaces&v=6.2" />
<script type="text/javascript"
src="/AnnotateImages/javax.faces.resource/jquery/jquery.js.xhtml?ln=primefaces&v=6.2">
</script>
<script type="text/javascript"
src="/AnnotateImages/javax.faces.resource/jquery/jquery-plugins.js.xhtml?ln=primefaces&v=6.2">
</script>
<script type="text/javascript"
src="/AnnotateImages/javax.faces.resource/core.js.xhtml?ln=primefaces&v=6.2">
</script>
<script type="text/javascript"
src="/AnnotateImages/javax.faces.resource/components.js.xhtml?ln=primefaces&v=6.2">
</script>
<script type="text/javascript">
if(window.PrimeFaces){PrimeFaces.settings.locale='en_GB';}</script>
<title>Test</title>
</head>
<body>
<div id="button_panel"
class="ui-panel ui-widget ui-widget-content ui-corner-all"
data-widget="testPanel">
<div id="button_panel_content"
class="ui-panel-content ui-widget-content">
<h1>Testing</h1>
</div>
<input type="hidden" id="button_panel_collapsed"
name="button_panel_collapsed" value="false" />
<input type="hidden" id="button_panel_visible"
name="button_panel_visible" value="true" />
</div>
<script id="button_panel_s" type="text/javascript">
PrimeFaces.cw("Panel","testPanel",{id:"button_panel",toggleable:true,toggleSpeed:500,collapsed:false,toggleOrientation:"vertical",toggleableHeader:false,closable:true,closeSpeed:500});</script>
<button id="j_idt6" name="j_idt6"
class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
onclick="PF('testPanel').show()" type="button">
<span class="ui-button-text ui-c">Show Panel</span>
</button>
<script id="j_idt6_s" type="text/javascript">
PrimeFaces.cw("CommandButton","widget_j_idt6",{id:"j_idt6"});</script>
<button id="j_idt7" name="j_idt7"
class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
onclick="PF('testPanel').hide();" type="button">
<span class="ui-button-text ui-c">Hide Panel</span>
</button>
<script id="j_idt7_s" type="text/javascript">
PrimeFaces.cw("CommandButton","widget_j_idt7",{id:"j_idt7"});</script>
</body>
</html>
Object { _super: undefined, cfg: {…}, id: "button_panel", jqId: "#button_panel",
jq: Object(1), widgetVar: "testPanel", header: {…}, title: {…},
content: Object(1), toggler: {}, …
}