2013-05-07 32 views
0

我有以下jquery,触发一个函数的关键。加载jQuery的触发器功能没有工作

$(document).ready(function() { 
    $("#calc").on("keyup", "input[type='text']", function() { 
    calculateSum(this); 
    }); 
calculateSum(); 
}); 

功能calculateSum在这里找到:http://jsfiddle.net/pmetzger/ANp8u/2/

如果我加载一个值到输入字段作为默认值,显然calculateSum不会触发,因为它不是一个KEYUP。

我这样做虽然,需要能够为默认值加载到有时输入字段,我需要的calculateSum功能的情况下,负载触发存在需要计算的值。我在我的document.ready的结尾添加了calculateSum()函数,但它只会加载全局小计。我需要它运行,就好像我正在键入价值领域。我也尝试过触发事件,但也没有运气。

我已经把一些默认值在那里进行测试。

回答

0

你可以做到这一点,触发第一个元素绑定事件,你不需要触发其上的所有元素,因为那将是运行X元素。

$(document).ready(function() { 
    $("#calc").on("keyup", "input[type='text']", function() { 
    calculateSum(this); 
    }); 
    $("input[type='text']").trigger("keyup"); 
}); 
+0

好了,这有助于肯定。我能够删除:首先,它触发了表中的所有内容。这是我所希望的。谢谢您的帮助。 – pjmetzger 2013-05-07 19:08:20

1

试试这个

var $elem = $('input[type="text"]', "#calc"); 

$elem.each(function($input) { 
    if($input.val()) { 
     $input.trigger('keyup'); 
    } 
}); 
+0

那不是实际的输入。这是一个包装输入 – 2013-05-07 19:00:05

+0

'$(“#calc”,'input [type =“text”]')''说找到''input [type =“text”]''里面的每个'#calc'显然将是0元素,因为输入不能包含元素。 – 2013-05-07 19:07:41

+0

修正了它..用另一种方式写了它.. :) – 2013-05-07 19:12:46

0

你需要或者调用触发的输入或对他们手动运行功能,像这样:

$(document).ready(function() { 
    //Bind the event 
    $("#calc").on("keyup", "input[type='text']", function() { 
    calculateSum(this); 
    }).find("input[type='text']").each(function() { 
     calculateSum(this); 
    }); 
});