0

JavaScript でちょっとした問題に直面しています。フォームにいくつかのフィールドを追加するために使用するテンプレートがあります。

 <div id="personTemplate" style="display: none;">
    <s:url id="personneList" action="personneList" namespace="/ajax" />
    <sj:autocompleter name="personnesContacts[ID_XXX]"
        id="nomPersonne_IDXXX" forceValidOption="false"
        key="label.serviceContacts" href="%{personneList}" />
</div>

jQuery を使用して、personTemplate div のコンテンツを取得します。これは次のとおりです。

<input id="nomPersonne_IDXXX" name="personnesContacts[1]" type="hidden">
<input autocomplete="off" class="ui-autocomplete-input" name="personnesContacts[ID_XXX]_widget" id="nomPersonne_IDXXX_widget" type="text">
<span class="ui-helper-hidden-accessible" aria-live="polite" role="status"></span>
<script type="text/javascript">
    jQuery(document).ready(function () {
        var options_nomPersonne_IDXXX_widget = {};
            options_nomPersonne_IDXXX_widget.hiddenid = "nomPersonne_IDXXX";
            options_nomPersonne_IDXXX_widget.selectBox = false;
            options_nomPersonne_IDXXX_widget.forceValidOption = false;

            options_nomPersonne_IDXXX_widget.jqueryaction = "autocompleter";
            options_nomPersonne_IDXXX_widget.id = "nomPersonne_IDXXX_widget";
            options_nomPersonne_IDXXX_widget.name = "personnesContacts[ID_XXX]_widget";
            options_nomPersonne_IDXXX_widget.href = "/baseline/ajax/personneList.action";
        jQuery.struts2_jquery_ui.bind(jQuery('#nomPersonne_IDXXX_widget'),options_nomPersonne_IDXXX_widget);
    });
</script>

IDXXX を数値に置き換えようとしましたが、このオカレンスが変更されるのは name 属性だけです。次のような div コンテンツを取得したときに IDXXX を置き換える方法を知っているかもしれません:

<script type="text/javascript">
counter = 0;
function addMorePersons() {
    counter++;
    var text = $('#personTemplate').html();
    text = text.replace("ID_XXX", counter);
    $(text).insertAfter($('#personnesContact_0_widget'));

}

4

1 に答える 1

1

グローバルな置換関数が必要です。正規表現を使用する場合は、すべてを置換するように指示できます。

text = text.replace(/ID_XXX/g, counter);
于 2013-05-13T10:47:38.493 に答える