0

私は 2 つのフォームを持っており、どちらも自動インクリメント行を持っています。これまでのところ、追加ボタンをクリックすると、コードは必要に応じて正常に機能しています。しかし今、ある行から別のテーブルでインクリメントされた値を別の行に投稿したいと考えています。同時に、私は 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>
4

2 に答える 2

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 に既に存在する要素にのみ関連付けることができるため、イベントを入力またはテキストエリア要素に直接関連付けることはできません。代わりに、イベントを#dataそれに添付することができます.DOMにはすでにあると思います。

ID の重複なし (#data3 テーブルの入力要素から ID を削除)

$( '#data' ).on( 'keyup', 'input, textarea', function() {
    $( '#data3' ).find( '[name="' + this.id + '"]' ).val( this.value );
});
于 2013-04-05T10:36:35.897 に答える
0
   $.each($('textarea'),function(){
     $(this).on('keyup',function(){
        $('body').append('<textarea>'+$(this).val()+'</textarea>'); 
          });
        });

jQuery $.each()をチェックして、このコードをすべての要素にループさせることができます

于 2013-04-05T10:35:49.267 に答える