1

我有这样的表格...

<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是一个要作为参数传递的字符串

等等..没有结果!

有人可以帮我解决这个问题吗?

4

1 回答 1

1

这里有两种方法可以让你做你想做的事:

  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例如在and属性之前添加的标签。正如@OlafKock 在他的评论中提到的, 还使用确保元素的或属性不会与页面上的其他元素冲突。<aui:form><portlet:namespace/>nameid
    <portlet:namespace/>idname

  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.jspas 调用此函数:

    <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>
    

希望这有助于前进。

于 2013-04-30T09:10:17.693 回答