从JSP调用带有参数的Javascript函数
Calling a Javascript function with parameters from JSP
我有一个这样的表单…
<aui:form action="<%= generateRuleURL.toString() %>" name="rulesForm" method="post">
<aui:button-row>
<aui:button type="button" id="End" value="End" />
<aui:button type="button" id="And" value="And" />
<aui:button type="button" id="Or" value="Or" />
</aui:button-row>
</aui:form>
在视图jsp文件中
和这样的JS…
document.getElementById( 'End' ).onclick = function()
{
var x=document.forms["rulesForm"]["FirstRuleElement"].value;
System.out.println("Prova : " + x);
var y=document.forms["rulesForm"]["FirstRuleAttribute"].value;
System.out.println("Prova : " + y);
var z=document.forms["rulesForm"]["Operator"].value;
System.out.println("Prova : " + z);
alert("First name must be filled out");
if (x==null || x=="" || y==null || y=="" || z==null || z=="")
{
alert("First name must be filled out");
return false;
}
AUI().one("#<portlet:namespace/>rulesForm").action='<%= generateRuleURL.toString()%>';
document.forms["rulesForm"].submit();
};
In submit.js
file.
我应该怎么做才能从一个按钮调用这个方法,而其他按钮调用其他方法?我试了很多想法,但这不起作用。
例如:
调用commonFunction js: onclick="commonFunction('End')"
//End是作为参数传递的字符串
等等…没有结果!
谁能帮我一下这个?有两种方法可以做到你想做的:
-
一种方法是把你的javascript代码在
view.jsp
和使用<portlet:namespace/>
这样:<aui:script> document.getElementById('<portlet:namespace/>End').onclick = function() { var x=document.forms["<portlet:namespace/>rulesForm"]["<portlet:namespace/>FirstRuleElement"].value; System.out.println("Prova : " + x); var y=document.forms["<portlet:namespace/>rulesForm"]["<portlet:namespace/>FirstRuleAttribute"].value; System.out.println("Prova : " + y); var z=document.forms["<portlet:namespace/>rulesForm"]["<portlet:namespace/>Operator"].value; System.out.println("Prova : " + z); alert("First name must be filled out"); if (x==null || x=="" || y==null || y=="" || z==null || z=="") { alert("First name must be filled out"); return false; } AUI().one("#<portlet:namespace/>rulesForm").action='<%= generateRuleURL.toString()%>'; document.forms["<portlet:namespace/>rulesForm"].submit(); }; </aui:script>
我们需要使用
<portlet:namespace/>
,因为您正在使用liferay的aui
标签,如<aui:form>
,它将<portlet:namespace/>
添加到name
和id
属性。
此外,使用<portlet:namespace/>
可以确保元素的id
或name
属性不会与页面上的其他元素冲突,正如@OlafKock在他的评论中提到的。 -
另一种方法,如果你想使用javascript文件
submit.js
,然后在该文件中创建一个javascriptfunction
:function submitMyForm(portletNamespace) { var x=document.forms[portletNamespace + "rulesForm"][portletNamespace + "FirstRuleElement"].value; System.out.println("Prova : " + x); var y=document.forms[portletNamespace + "rulesForm"][portletNamespace + "FirstRuleAttribute"].value; System.out.println("Prova : " + y); var z=document.forms[portletNamespace + "rulesForm"][portletNamespace + "Operator"].value; System.out.println("Prova : " + z); alert("First name must be filled out"); if (x==null || x=="" || y==null || y=="" || z==null || z=="") { alert("First name must be filled out"); return false; } AUI().one("#<portlet:namespace/>rulesForm").action='<%= generateRuleURL.toString()%>'; document.forms[portletNamespace + "rulesForm"].submit(); }
从
view.jsp
调用这个函数:<aui:form action="<%= generateRuleURL.toString() %>" name="rulesForm" method="post"> <aui:button-row> <aui:button type="button" id="End" value="End" onClick="submitMyForm('<portlet:namespace/>')" /> <aui:button type="button" id="And" value="And" /> <aui:button type="button" id="Or" value="Or" /> </aui:button-row> </aui:form>
希望这能帮到你。
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 正在全局范围中查找JavaScript函数
- 如何将输入(type=text)从html表单传递到javascript函数
- 如何调用这个匿名 JavaScript 函数
- 通过Ajax将JavaScript函数传递给PHP文件
- 在javascript函数中设置全局变量
- 如何在执行此特定onclick事件时执行JavaScript函数
- 使用javascript函数在页面初始化后加载jquery
- javascript函数同步
- 如何将一个JavaScript函数回调为多个函数
- 在javascript函数中使用php变量
- 代码背后调用一个JavaScript函数的按钮点击-C#
- 将JavaScript函数与HTML分离
- 组合两个javascript函数
- 在 Java 中的 JavaScript 函数中插入 Wicket 值
- javascript函数内部的代码用逗号而不是分号分隔
- href属性内的javascript函数
- 使用html表单中的参数调用JavaScript函数
- 分析Javascript函数中的多个对象
- javascript函数的:和=之间的区别