我有两个在用户输入数据时触发的功能。它们基本上将他们选择的选项的值相加,然后输出它们。
在此表单上,特别是选项已预先填充。因此,未触发函数,将其计算保留为def reco(n):
print('create instance nbr ', n)
if n == 1:
print('base case reached, instances will be popped LIFO')
return
else:
n -= 1
reco(n)
print('pop instance nbr ', n)
n = 5
reco(n)
。
这些功能显示在null
功能
</body>
代码放置在函数下方以尝试触发它们:
$(calculateScore);
function calculateScore () {
var fields = $('.form-group #input').change(calculate);
function calculate () {
var score = 0;
fields.each(function () {
score += +$(this).val();
});
$('#score').html(score.toFixed(0));
}
}
$(calculateHiddenScore);
function calculateHiddenScore () {
var fields = $('.form-group #input').change(calculate);
function calculate () {
var score = 0;
fields.each(function () {
score += +$(this).val();
});
$('#hidden_score').val(score.toFixed(0));
}
}
我也尝试过:
$(function () {
calculateHiddenScore();
calculateScore();
});
请在页面加载后如何触发这两个功能?非常感谢。
答案 0 :(得分:1)
即使您的项目已预先填充,DOM就绪也不会触发onchange
事件
因此,你必须修改你的脚本,如:
function calculateScore() {
var fields = $('.form-group #input'); // Cache only!
function calculate() {
var score = 0;
fields.each(function() {
score += +$(this).val();
});
$('#score').html(score.toFixed(0));
$('#hidden_score').val(score.toFixed(0));
}
calculate(); // Calculate ASAP (on DOM ready)
fields.on("change", calculate); // and also on change
}
jQuery(function($) { // DOM is ready and $ alias secured
calculateScore(); // Trigger
// other jQuery code here
});
PS:顺便说一句,即使上面的内容有所改善,使用each
在单个ID #input
元素上循环也没什么意义 - 我会把它留给你...... / p>