简体   繁体   中英

Onchange event is not detecting copy paste in input fields

I have so many Input fields in html table and I am using the code below to copy paste columns from excel directly to these input fields. and the code below is working great for copy paste columns from excel to this html input table fields. My problem is that I want onchange event for each input to detect when I copy paste and alert these values. cause then I can take each value was changed and change it in the database. The Onchange event does not detect change in value when I copy paste!

<table>
<thead>

<tr>
      <th>Name</th>
      <th>Unit</th>
      <th >ID</th>
      <th >Margin </th>
</tr>


<tbody>
<?php
 $query = " select  name,unit,Margin, id FROM Table1";

                             $stmt = $conn->query( $query ); 
                             $count=0;
                              while ( $row = $stmt->fetch( PDO::FETCH_ASSOC ) )

 { ?>


<tr>
<td> <input onchange="send(this)" type="text" value="<?php echo $row['Name']; ?>">   </td>
<td><input onchange="send(this)" type="number" value="<?php echo $row['unit]; ?>" ></td>
<td><input  type="number" value="<?php echo $row['ID']; ?>" ></td>
<td><input onchange="send(this)" type="number" value="<?php echo $row['Margin']; ?>" ></td>

</tr>

<?php } ?>

</tbody>
</thead>
</table>


    <!-- Copy Paste in input fields -->
   <script type="text/javascript">
$('input').on('paste', function(e){
    var $this = $(this);
    $.each(e.originalEvent.clipboardData.items, function(i, v){
        if (v.type === 'text/plain'){
            v.getAsString(function(text){
                var x = $this.closest('td').index(),
                    y = $this.closest('tr').index()+1,
                    obj = {};
                text = text.trim('\r\n');
                $.each(text.split('\r\n'), function(i2, v2){
                    $.each(v2.split('\t'), function(i3, v3){
                        var row = y+i2, col = x+i3;
                        obj['cell-'+row+'-'+col] = v3;
                        $this.closest('table').find('tr:eq('+row+') td:eq('+col+') input').val(v3);
                    });
                });
            });
        }
    });
    return false;
   
});
   </script>
<script>

function send(value){

alert(value.value);

}

</script

I use this for my input for cut,copy & paste

 function send(value){ alert(value.value); }
 input here: <input onchange="send(this)" type="text" oncopy="send(this)" onpaste="send(this)" oncut="send(this)" type="text" value=""/>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM