Javascript 获取数据表中动态文本框的值,并在按键时计算新值

Javascript 获取数据表中动态文本框的值,并在按键时计算新值,javascript,jquery,asp.net,datatable,keypress,Javascript,Jquery,Asp.net,Datatable,Keypress,这是对以下已解决问题的补充(因此请不要将其标记为重复): 我在数据表中创建了一个动态文本框。现在,我需要访问该值以在按下键时计算新值。虽然我发现()上的答案非常有用,但我仍然不知道如何获取文本框的值 “keyup change”功能已触发,因为我收到警报。但是,我得到一个“NaN”(不是数字)值。请帮忙 这是我的代码: var xindex; var yindex; $(document).on('mouseover', '#table1 tr', function() { x

这是对以下已解决问题的补充(因此请不要将其标记为重复):

  • 我在数据表中创建了一个动态文本框。现在,我需要访问该值以在按下键时计算新值。虽然我发现()上的答案非常有用,但我仍然不知道如何获取文本框的值

    “keyup change”功能已触发,因为我收到警报。但是,我得到一个“NaN”(不是数字)值。请帮忙

    这是我的代码:

    var xindex;
    var yindex;
    
     $(document).on('mouseover', '#table1 tr', function() {
         xindex = this;
         yindex = this.rowIndex;
     });
    
    
     var dtable = $('#table1').DataTable();
     var origval = $('#table1 tr:eq(' + parseInt(yindex) + ') >td:eq(' + 1 + ')').html(); 
    //this is the original value in which I would like to add the adjustment
     var textvalue = $(yindex).find(".txtval");
       //upon creating the datatable dynamically, the class of the input textbox is "txtval"
     var newval;
    
     $(document).on('keypress', '.textvalue', function(e) {
        if (e.which != 8 && e.which !=0 && (e.which < 48 || e.which > 57)){
            e.stopImmediatePropagation();
    
        return false;
        }
    
    
        }).on('keyup change', function(e) {
    
            newval = origval + this.value;
            alert(newval);
     });
    
    var-xindex;
    var-yindex;
    $(document).on('mouseover','#table1 tr',function(){
    xindex=这个;
    yindex=this.rowIndex;
    });
    var dtable=$('#table1').DataTable();
    var origval=$('#表1 tr:eq('+parseInt(yindex)+')>td:eq('+1+')).html();
    //这是我要添加调整的原始值
    var textvalue=$(yindex.find(“.txtval”);
    //动态创建datatable时,输入文本框的类为“txtval”
    var newval;
    $(文档).on('keypress','.textvalue',函数(e){
    如果(e.which!=8&&e.which!=0&&e.which<48 | e.which>57)){
    e、 停止即时复制();
    返回false;
    }
    }).on('keyup change',功能(e){
    newval=origval+this.value;
    警报(newval);
    });
    
    在您的函数中,
    这是文档。如果要在文本框中显示文本,则此.value没有意义

    这是我的chrome控制台:
    
    $(文档).on('keypressed','body',函数(e){
    返回错误
    }).on('keyup change',函数(e){
    console.log(this)});
    


    返回我
    [document]

    幸运的是,我能够通过全局声明变量(并在datatable mouseover事件中插入值)来解决问题。请查看以下代码(如果您能帮助我改进/清理代码,我恳请您,请这样做。谢谢)

    var-xndex;
    var-yindex;
    var origval;
    var newval;
    $(document).on('mouseover','#table1 tr',function(){
    rndex=这个;
    jindex=this.rowIndex;
    origval=$('#表1 tr:eq('+parseInt(yindex)+')>td:eq('+1++')).html();
    });
    $(文档).on('keypress','.txtval',函数(e){
    var mvalue=jQuery(xndex).find(“.txtval”).val();
    //要添加到原始值的值
    如果(e.which!=8&&e.which!=0&&e.which<48 | e.which>57)){
    e、 停止即时复制();
    //捕获非数字字符
    返回false;
    }).on('keyup change',功能(e){
    newval=parseFloat(origval)+parseFloat(mvalue);
    警报(newval);
    });
    

    origval是text/html,而
    this.value
    是一个字符串,您需要将两者转换为整数/float我已经用parseFloat(this.value)实现了这一点,但是,我仍然有NaN
    var xndex;
    var yindex;
    var origval; 
    var newval;
    
    $(document).on('mouseover', '#table1 tr', function() {
         rndex = this;
         jindex = this.rowIndex;
    
         origval = $('#table1 tr:eq(' + parseInt(yindex) + ') >td:eq(' + 1 + ')').html();
    
     });
    
    
    $(document).on('keypress', '.txtval', function(e) {
         var mvalue = jQuery(xndex).find(".txtval").val();
         //value to be added to origval
    
    
        if (e.which != 8 && e.which !=0 && (e.which < 48 || e.which > 57)){
            e.stopImmediatePropagation();
          //to trap non-numeric characters
        return false;
    
    
        }).on('keyup change', function(e) {
    
            newval = parseFloat(origval) + parseFloat(mvalue);
            alert(newval);
     });