簡體   English   中英

使用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();
};

submit.js文件中。

我應該從一個按鈕調用此方法,而從其他按鈕調用該方法該怎么辦? 我嘗試了很多思考,但這沒有起作用。

例如:

調用commonFunction js: onclick="commonFunction('End')" // End是要作為參數傳遞的字符串

等等..沒有結果!

有人可以幫我這個忙嗎?

您可以通過以下兩種方式執行您想做的事情:

  1. 一種方法是將您的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/>附加到nameid屬性上。
    還使用<portlet:namespace/>確保元素的idname屬性不會與頁面上的其他元素沖突,如@OlafKock在其注釋中提到的那樣。

  2. 另一種方法,如果要使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM