0

hereに示すように、Liferayでテキストボックスを動的に作成しようとしていました。

<input>タグではできますが、ではできません<aui:input>。なぜですか?

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ taglib uri="http://alloy.liferay.com/tld/aui" prefix="aui" %>
<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %> 

<html>

<portlet:defineObjects />

<script type="text/javascript">

$(document).ready(function(){

    var counter = 2;

    $("#addButton").click(function () {

        if(counter>10){
            alert("Only 10 textboxes allow");
            return false;
        }

        var newTextBoxDiv = $(document.createElement('div')).attr("id", 'TextBoxDiv' + counter);

        alert();

        newTextBoxDiv.html('<aui:input type="text" name="textbox' + counter + '" id="textbox' + counter + '" value="" />');

        alert(newTextBoxDiv.html);

        newTextBoxDiv.appendTo("#TextBoxesGroup");

        counter++;
    });

    $("#removeButton").click(function () {
        if(counter==1){
            alert("No more textbox to remove");
            return false;
        }   

        counter--;

        $("#TextBoxDiv" + counter).remove();
    });

    $("#getButtonValue").click(function () {

        var msg = '';

        for(i=1; i<counter; i++) {
            msg += "\n Textbox #" + i + " : " + $('#<portlet:namespace/>textbox' + i).val();
        }

        alert(msg);
    });
  });
</script>

<div id='TextBoxesGroup'>
    <div id="TextBoxDiv1">
        <aui:input type="text" label="TextBox #1" id="textbox1" name="textbox1"></aui:input>
    </div>
</div>

<input type='button' value='Add Button' id='addButton'>
<input type='button' value='Remove Button' id='removeButton'>
<input type='button' value='Get TextBox Value' id='getButtonValue'>

</body>
</html>
4

1 に答える 1

3

<aui:input>HTML ではなく、jsp コードです。使えません

newTextBoxDiv.html('<aui:input type="text" name="textbox' + counter + 
          '" id="textbox' + counter + '" value="" />');

あなたのブラウザはそれをどうするか分からないからです。

jQuery は純粋に javascript であるのに対し、AUI は javascript、コンポーネント (DOM クラス、CSS など)、および Java JSP サポートを組み合わせていることに注意してください。および<aui:input>関連するタグは、ページのレンダリング時 (サーバー側) に処理され、出力が生成されます。動的にレンダリングされた HTML でその出力を使用するか、<liferay-util:buffer>タグなどを使用してコンテンツを一時変数に保存する必要があります。注意: この結果を JavaScript から使用するには、結果を適切にエスケープする必要があります。

于 2013-06-04T09:04:30.027 に答える