2015-11-02 64 views
-1

我想在输入元素上激活keyup事件,问题是一旦我按下某个键就没有触发,我必须做另一个键盘事件来激活它,而不是正常!jQuery键盘功能不能正常工作

这里是我的代码:

$(".conv").keyup(function(){ 
    var itemId = new Array(); 

    $(".itemId").each(function() { 
     itemId.push($(this).text()); 
    }); 

    if (itemId.length == 0 || isEmpty($(this).val())) { 
     $(this).val('0.00'); 
     return false; 
    } 

    if (!$.isNumeric($(this).val())) { 
     alert("Only numeric values are allowed in '" + $(this).parent().parent().find('th').text() + "' field."); 
     return false; 
    } 

    calcShipping(); 
}); 

我想 “的” 这个样子,也没有工作使用:

$('body').on("keyup", ".plus", function(){ 
    var itemId = new Array(); 

    $(".itemId").each(function() { 
     itemId.push($(this).text()); 
    }); 

    if (itemId.length == 0) { 
     $(this).val('0.00'); 
     return false; 
    } 

    calcShipping(); 
}); 

计算运费功能:

var calcShipping = function() { 

    if (isEmpty($(".totalCost2").text())) { 
     $(".totalCost2").text(parseInt($(".totalCost").text())); 
    } 

    var plus  = 0; 
    var conv  = parseInt($(".conv").val()); 
    var tCost  = parseInt($(".totalCost2").text()); 
    var tQty  = 0; 
    var tFinal = 0; 
    var tLast  = 0; 
    var qty  = 0; 
    var totalCost = 0; 
    var cost  = new Array(); 
    var qtyCost = new Array(); 

    $("#txtItems2").attr('disabled','disabled'); 
    $("#btnReset2").attr('disabled','disabled'); 
    $("#uploadItems").attr('disabled','disabled'); 
    $("#startUpload").attr('disabled','disabled'); 

    $(".plus").each(function(){ 
     if (isEmpty($(this).val())) { 
      $(this).val('0.00'); 
     } 
     if (!$.isNumeric($(this).val())) { 
      alert("Only numeric values are allowed in '" + $(this).parent().parent().find('th').text() + "' field."); 
      return false; 
     } 
     plus += parseInt($(this).val()); 
    }); 

    $(".qty").each(function() { 
     qtyCost.push(parseInt($(this).text())); 
     tQty += parseInt($(this).text()); 
    }); 

    $(".cost").each(function() { 
     cost.push($(this).text()); 
    }); 

    tFinal = plus + tCost; 
    tLast = tFinal/tQty; 

    var qty = 0; 

    $(".cost").each(function(){ 
     qty = parseInt($(this).parent().parent().find($(".qty")).text()); 
     $(this).text(tLast * qty * conv); 
     qty = 0; 
    }); 

    for (var i = 0; i < cost.length; i++) 
    { 
     totalCost += (cost[i] * qtyCost[i]); 
    } 

    $(".totalCost").text(totalCost.toFixed(2)); 
} 

任何建议?

+0

它对我来说工作正常:http://jsfiddle.net/8ukL69r3/当然,事件中的逻辑不起作用,因为我缺少代码的其他部分,但事件会按照它应该发生的那样触发。 – Anders

+0

我看到它通常单独工作,但对于我的代码段它不是! – CairoCoder

+0

堆栈溢出不是一个调试服务。你不能只转储你的所有代码。请阅读[MCVE]。你需要提供一个*最小*的例子。 – Anders

回答

0

我发现这个问题,我不得不重新计算 “成本” 修改它,而不是之前,像这样经过:

$(".cost").each(function(){ 
     qty = parseInt($(this).parent().parent().find($(".qty")).text()); 
     var newCost = tLast * qty * conv; 
     $(this).text(newCost); 
     qty = 0; 
}); 

$(".cost").each(function() { 
    cost.push($(this).text()); 
}); 
0

请尝试以下

$('.conv').on("input", function() { 
    //do what you need to do here 
}); 

喜欢的东西this

+0

同样的问题,我必须按另一个键! – CairoCoder