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ファイル内。

ボタンの 1 つからこのメソッドを呼び出し、他のボタンの他​​のメソッドを呼び出すにはどうすればよいですか? いろいろ考えてみましたが、これは機能しませんでした..

例えば:

commonFunction の呼び出しjs: onclick="commonFunction('End')"//End はパラメータとして渡される文字列です

など..結果なし!

誰か私に手を貸してくれませんか?

4

1 に答える 1

1

やりたいことを実行するには、次の 2 つの方法があります。

  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>
    

    and属性の先頭に を追加するような<portlet:namespace/>liferay のauiタグを使用しているため、を使用する必要があります。 また、 @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 に答える