2011-07-25 164 views
0

我正在构建时间跟踪系统。用户将输入一周内工作的小时数。我们有两周的工资期(2周)。每天输入一小时后,使用onChange触发一个javascript函数,该函数可计算每周总计并将其输出到只读输入文本框(txtWeek1Total和txtWeek2Total)。该部分起作用。根据基于其他输入值计算的输入值计算总和

下一步是根据txtWeek1Total和txtWeek2Total的输入值自动计算工资周期总额(第1周+第2周)。目前,我在这些文本框上使用onChange,但它不会触发。只有在手动将值输入到每周总文本框中时才会触发它。即使这些值在用户输入每日小时时自动更新。

HTML:

<input type="text" id="week1SundayTotal" onChange="calculateWeeklyHours('week1');" /><br /> 
<input type="text" id="week1MondayTotal" onChange="calculateWeeklyHours('week1');" /><br /> 
<input type="text" id="week1TuesdayTotal" onChange="calculateWeeklyHours('week1');" /><br /> 
<input type="text" id="week1WednesdayTotal" onChange="calculateWeeklyHours('week1');" /><br /> 
<input type="text" id="week1ThursdayTotal" onChange="calculateWeeklyHours('week1');" /><br /> 
<input type="text" id="week1FridayTotal" onChange="calculateWeeklyHours('week1');" /><br /> 
<input type="text" id="week1SaturdayTotal" onChange="calculateWeeklyHours('week1');" /><br /> 
<input type="text" id="week1WeekTotal" onChange="calculateTotal();" /><br /><br /> 

<input type="text" id="week2SundayTotal" onChange="calculateWeeklyHours('week2');" /><br /> 
<input type="text" id="week2MondayTotal" onChange="calculateWeeklyHours('week2');" /><br /> 
<input type="text" id="week2TuesdayTotal" onChange="calculateWeeklyHours('week2');" /><br /> 
<input type="text" id="week2WednesdayTotal" onChange="calculateWeeklyHours('week2');" /><br /> 
<input type="text" id="week2ThursdayTotal" onChange="calculateWeeklyHours('week2');" /><br /> 
<input type="text" id="week2FridayTotal" onChange="calculateWeeklyHours('week2');" /><br /> 
<input type="text" id="week2SaturdayTotal" onChange="calculateWeeklyHours('week2');" /><br /> 
<input type="text" id="week2WeekTotal" onChange="calculateWeeklyHours('week2');" /><br /> 

<input type="text" id="Total" /> 

的javascript:

function calculateWeeklyHours(week) { 
var sunday = document.getElementById(week + 'SundayTotal').value; 
var monday = document.getElementById(week + 'MondayTotal').value; 
var tuesday = document.getElementById(week + 'TuesdayTotal').value; 
var wednesday = document.getElementById(week + 'WednesdayTotal').value; 
var thursday = document.getElementById(week + 'ThursdayTotal').value; 
var friday = document.getElementById(week + 'FridayTotal').value; 
var saturday = document.getElementById(week + 'SaturdayTotal').value; 

var weekTotal = document.getElementById(week + 'WeekTotal'); 
weekTotal.value = Number(sunday) + Number(monday) + Number(tuesday) + Number(wednesday) + Number(thursday) + Number(friday) + Number(saturday); 
} 

function calculateTotal() { 
    var week1 = document.getElementById('w1WeekTotal').value; 
    var week2 = document.getElementById('w2WeekTotal').value; 

    var total = document.getElementById('Total'); 
    total.value = Number(week1) + Number(week2); 
} 

回答

2

使用onkeyup事件,而不是onchange事件 - 检查此(http:// jsfiddle.net/JrDd3/2/)

+0

我更喜欢那样,但是您仍然在calculateWeeklyHours结尾调用calculateTotal:P –

+0

谢谢。这很好。当我们处于这种状态时,是否有比我所做的更好/更优雅的解决方案? – dam