我在liferay portlet中使用AlloyUI。
我想在javascript中使用我的<input>
个ID。问题是在客户端更改了元素的id。
例如:
如果我将<input>
的ID设置为“用户名”,则会更改为_hospital_WAR_hospitalportlet_userName
,即_hospital_WAR_hospitalportlet_
会附加到ID,其中Hospital
是我的portlet名称。
如何获取客户端ID,以便我可以在jquery中使用它?
答案 0 :(得分:8)
_hospital_WAR_hospitalportlet_
的{{1}}前面的字符串Id
只是portlet命名空间。
这仅适用于<input>
的{{1}}&amp;如果您使用<input>
代码和name
&amp;如果您只使用普通的html id
标记,则不会更改<aui:input>
个属性。
但是,使用name
是一个好习惯,您可以执行以下操作来获取javascript代码中的portlet命名空间:
如果您在JSP中使用javascripts,即在id
或<input>
内使用,那么您可以使用 <aui:input>
或 {{ 1}} 在javascript中获取字符串<script> .. </script>
,类似于。
<aui:script> .. </aui:script>
但如果您使用的是<portlet:namespace />
文件,我建议您将命名空间作为参数传递给<%= renderResponse.getNamespace() %>
文件中的javascript函数:
_hospital_WAR_hospitalportlet_
从JSP调用此函数:
jQuery("#<portlet:namespace />username").val();
// Or
jQuery("#<%= renderResponse.getNamespace() %>username").val();
希望这会有所帮助。我不知道是否有办法直接通过Liferay定义的一些javascript函数获取*.js
或js
。如果你得到类似的东西,你可以在这里发布,这将非常有帮助。
答案 1 :(得分:4)
试试这个:
Liferay.Portlet.ready(
/*
This function gets loaded after each and every portlet on the page.
portletId: the current portlet's id
node: the Alloy Node object of the current portlet
*/
function(portletId, node) {
}
);