2011-07-25 17 views
0

私は時間追跡システムを構築しています。ユーザーはその週に働いた時間を入力します。隔週賃金期間(2週間)があります。 1日の時間が入力されると、onChangeは週ごとの合計を計算し、読み込み専用の入力テキストボックス(txtWeek1TotalおよびtxtWeek2Total)に出力するjavascript関数をトリガするために使用されます。その部分は機能する。他の入力値に基づいて計算された入力値に基づいて合計を計算します

次のステップは、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:http://jsfiddle.net/JrDd3/

答えて

2

の代わりにイベントをonkeyupの使用:

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); 
} 
+0

私はそれが気に入っていますが、calculateWeeklyHoursの最後にはまだcalculateTotalを呼び出しています:P –

+0

ありがとうございます。それは素晴らしい作品です。私たちはそれに取り組んでいますが、私がやっていることよりも優れた/よりエレガントな解決策がありますか? – dam

0

だけcalculateWeeklyHoursが

例関数の最後にcalculateTotal関数を呼び出しますonchangeイベント - これをチェックします(http:// jsfiddle.net/JrDd3/2/)

関連する問題