使用jQuery以编程方式触发blur事件

时间:2013-06-26 16:00:44

标签: jquery

我有一个排序矩阵,其中包含类oneInput的输入行,我有一个jquery函数,它触发任何输入的blur事件,并对行和列求和,并将总和插入到适当的位置 - 所有这些都像我打算一样。

我要做的是在页面加载时将所有行和列与初始值相加。我在document.ready上调用了一个init()函数,我已经尝试了以下两种方法但没有成功。

function init(){
  $('.oneInput').trigger('blur');
}

function init(){
    $('.oneInput').each(function(){
      $(this).trigger('blur');
    });
  }

在该模糊事件上触发的功能是:

$(".oneInput").blur(function(){
    // Tally Row
    var thisRow = $(this).closest('tr');
    var rowTotal = 0;
    thisRow.find('input.oneInput').each(function() {
        var n = parseFloat(this.value);
        if(!isNaN(n))
            rowTotal += n;
      });
     $(this).parent().parent().find( 'input.screenOneTotal').empty().val( rowTotal );

     // Tally Column
     var colName = $(this).attr('name');
     var col = colName.substr(0,3);
     var spanName = "input#tot"+col;
     var tot = parseInt($("input[name='"+col+"1']").val())+parseInt($("input[name='"+col+"2']").val())+parseInt($("input[name='"+col+"3']").val())+parseInt($("input[name='"+col+"4']").val())+parseInt($("input[name='"+col+"5']").val())+parseInt($("input[name='"+col+"6']").val())+parseInt($("input[name='"+col+"7']").val())+parseInt($("input[name='"+col+"8']").val())+parseInt($("input[name='"+col+"9']").val())+parseInt($("input[name='"+col+"10']").val())+parseInt($("input[name='"+col+"11']").val())+parseInt($("input[name='"+col+"12']").val());
     $(spanName).empty().val(tot);

     //GRAND TOTAL
     var gTotalOne = parseInt($("#totLIB").html())+parseInt($("#totRPI").html())+parseInt($("#totLMM").html());
     $("#scrOneTotal").empty().html(gTotalOne);
  }); // end inputOne blur

如果需要,我可以提供其余的页面代码,但它是在php中,需要一个数据库。

2 个答案:

答案 0 :(得分:7)

只需将.blur()添加到blur函数的末尾,它就会在DOM就绪时调用它:

$(".oneInput").blur(function(){
   //code code and more code
}).blur();

演示:http://jsfiddle.net/Exw3f/

答案 1 :(得分:2)

将您的代码放入一个单独的函数中,在document.ready上调用它并在模糊触发器上调用它。

实施例

function calculateTotals() { ... }

$(document).ready(function() {
    $('.oneInput').each(calculateTotals);
}):

$('.oneInput').blur(calculateTotals);