动态字符数

时间:2016-07-06 16:34:14

标签: javascript jquery datatable

我正在使用Datatables,动态地将Rows添加到我的表中, 我有3列,

  1. 索引
  2. 文本
  3. CharCount
  4. 我需要逻辑来实现每个' Text'的字符数。列中的相应' CharCount'字段

    这是我的代码 -

    $(document).ready(function() {
        var t = $('#example').DataTable();
        var counter = 1;
    
        $('#addRow').on( 'click', function () {
            t.row.add( [
                counter,
                '<input type="text" id=textBox'+counter+'/>',
                '<input type="text" id=counterBox'+counter+' disabled="true"/>'
            ] ).draw( false );
    
            counter++;
        });
    
        // Automatically add a first row of data
        $('#addRow').click();
    });
    
    <script src="https://code.jquery.com/jquery-1.12.3.js"></script>
    <script src="https://cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script>
    <link rel="stylesheet" href="https://cdn.datatables.net/1.10.12/css/jquery.dataTables.min.css">
    
    <button id="addRow">Add</button>    
    <table id="example" class="display" cellspacing="0" width="100%">
        <thead>
            <tr>
                <th>Index</th>
                <th>Text</th>
                <th>CharCount</th>
            </tr>
        </thead>
        <tfoot>
            <tr>
                <th>Index</th>
                <th>Text</th>
                <th>CharCount</th>
            </tr>
        </tfoot>
    </table>
    

    例如,用户在“文本”列中键入内容,使用on keyUp事件,我需要输入的字符总数,以显示在相应的CharCount中专栏文本框。

1 个答案:

答案 0 :(得分:0)

您可以使用jQuery .map()遍历所有字段。

$(document).ready(function(){
            var t = $('#example').DataTable();
            var counter = 1;
            $('#addRow').on( 'click', function () {
                t.row.add( [
                    counter,
                    '<input type="text" id="textBox'+counter+'" />',
                    '<input type="text" id="counterBox'+counter+'" readonly />'
                ] ).draw( false );

                counter++;
            } );
  
           $(document).on( 'keyup', 'input[id^=textBox]', function () {
                $(this).parents('tr').find('input[id^=counterBox]').val($(this).val().length); 
            } );

            // Automatically add a first row of data
            $('#addRow').click();
});
<script src="https://code.jquery.com/jquery-1.12.3.js"></script>
    <script src="https://cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script>
 
    <link rel="stylesheet" href="https://cdn.datatables.net/1.10.12/css/jquery.dataTables.min.css"> 
    <button id="addRow">Add</button> 
    <table id="example" class="display" cellspacing="0" width="100%">
        <thead>
            <tr>
                <th>Index</th>
                <th>Text</th>
                <th>CharsLeft</th>
            </tr>
        </thead>
        <tfoot>
            <tr>
                <th>Index</th>
                <th>Text</th>
                <th>CharsLeft</th>
            </tr>
        </tfoot>
    </table>