生成元素并将其内容放入新的实时生成元素中

时间:2013-04-05 10:08:26

标签: jquery dom

我有两种形式都有自动增量行。到目前为止,当我点击添加按钮时,代码根据我的需要正常工作。但是现在我想将值从一行发布到另一行,而在另一个表中递增。同时我有javascript代码,但该代码在自动增量功能中似乎无法正常工作。  这是我的jquery:

<script type='text/javascript'>
    //<![CDATA[
     $(document).ready(function() {
      var currentItem = 7;
            $('#addnew').click(function() {
                currentItem++;
                $('#items').val(currentItem);
                $('#items2').val(currentItem);
                var strToAdd = '<tr><td align="center"><input type="text" size="6" maxlength="6" id="ord_' + currentItem + '" maxlength="6" name="ord_' + currentItem + '" class="form-input-oth" onkeyup=$("#ordby_'+ currentItem +'").val($("#ordby_'+ currentItem +'").val())/></td>\n\
                                    <td align="center"><input type="text" size="6" maxlength="6" id="srno' + currentItem + '" maxlength="6" name="srno_' + currentItem + '" class="form-input-oth" onkeyup="document.getElementById("srno_' + currentItem + '").value = this.value;"/></td>\n\
                                    <td align="center"><textarea name="descrip_' + currentItem + '" id="descrip_' + currentItem + '" cols="70" class="form-input-textarea" onkeyup="document.getElementById("descrip_' + currentItem + '").value = this.value;"></textarea></td>\n\
                                    <td align="center"><input type="text" size="6" maxlength="9" id="unit_' + currentItem + '" maxlength="6" name="unit_' + currentItem + '" class="form-input-rate" onkeyup="document.getElementById("unit_' + currentItem + '").value = this.value;"/></td>\n\
                                    <td align="center"><input type="text" size="6" maxlength="9" id="rate_' + currentItem + '" maxlength="6" name="rate_' + currentItem + '" class="form-input-rate" onkeyup="document.getElementById("rate_' + currentItem + '").value = this.value;"/></td></tr>';

                var strToAdd3 = '<tr><td align="center"><input type="text" size="6" maxlength="6" id="ord_' + currentItem + '" maxlength="6" name="ord_' + currentItem + '" class="form-input-oth"  /></td>\n\
                                    <td align="center"><input type="text" size="6" maxlength="6" id="srno_' + currentItem + '" maxlength="6" name="srno_' + currentItem + '" class="form-input-oth"  /></td>\n\
                                    <td align="center"><textarea name="text_' + currentItem + '" id="descrip_' + currentItem + '" cols="70" style="display: none;"></textarea></td>\n\
                                    <td align="center"><input type="text" size="6" maxlength="9" id="unit_' + currentItem + '" maxlength="6" name="unit_' + currentItem + '" class="form-input-rate"  /></td>\n\
                                    <td align="center"><input type="text" size="6" maxlength="9" id="rate_' + currentItem + '" maxlength="6" name="rate_' + currentItem + '" class="form-input-rate"  /></td></tr>';

                $('#data').append(strToAdd);
                $('#data3').append(strToAdd3);

            });
        });

    //]]>
    </script>

2 个答案:

答案 0 :(得分:0)

   $.each($('textarea'),function(){
     $(this).on('keyup',function(){
        $('body').append('<textarea>'+$(this).val()+'</textarea>'); 
          });
        });

您可以查看jQuery $.each()以在所有元素上循环显示此代码

答案 1 :(得分:0)

您可以尝试删除此内容......

onkeyup=$("#ordby_'+ currentItem +'").val($("#ordby_'+ currentItem +'").val())

...并添加此活动

$( '.class-name-for-input-element-you-want-to-attach-event-to' ).on( 'keyup', function() {
    var itemIdx = parseInt( this.id.substr( 4 ), 10 ); // Strips the 'Ord_' from the id
    // Do whatever you need to do with the integer

    // Find element in #data3 and replace its value with the value in the element that triggered this event
    $( '#data3' ).find( 'selector' ).val( this.value );
});

为了使其正常工作,您需要为每个输入元素添加一个类名。

更简单的版本
或者,如果要将所有输入元素值复制到#data3表对应的输入元素,请使用:

$( '#data' ).on( 'keyup', 'input, textarea', function() {
    $( '#data3' ).find( '#' + this.id ).val( this.value );
});

备注
您只能将事件附加到DOM中已存在的元素,因此您无法直接将事件附加到input或textarea元素。相反,您可以将事件附加到#data,我认为该事件已经存在于DOM中。

没有重复的ID(从#data3表的输入元素中删除了ID)

$( '#data' ).on( 'keyup', 'input, textarea', function() {
    $( '#data3' ).find( '[name="' + this.id + '"]' ).val( this.value );
});