[英]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();
};
在submit.js
文件中。
我應該從一個按鈕調用此方法,而從其他按鈕調用該方法該怎么辦? 我嘗試了很多思考,但這沒有起作用。
例如:
調用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
則在該文件中創建javascript function
:
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>
希望這有助於前進。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.