2011-07-05 59 views
0

我有一個表格來計算兩個日期之間的時間,並存儲6個數字字段。結合兩個javascript函數來計算表格

如果用戶在兩個日期之後開始選擇以使表單按預期工作,那麼我想讓表單將這些值分開來分類。

採樣頁面位於here..of什麼我的意圖是

http://jsfiddle.net/GfN5u/1/的JS是withing的HTML

我覺得我幾乎沒有,但靜物不公平的,我這個星期。

同樣在IE 8中,select元素會丟失它們的內容.....即使在jsfiddle中也是如此。

任何幫助,將不勝感激。

謝謝

 <script> 
     var txt1 = document.Edit.StartTime.value 
     var txt2 = document.Edit.EndTime.value 

     var differenceInSeconds = (Calendar.parseDate(txt2, false).getTime() - Calendar.parseDate(txt1, false).getTime())/1000; 
     var val9 = differenceInSeconds/60.0/60 
     alert(val9) 
     </script> 


      <script> 
     re=/\D/g 

     function getGoodVal(fld) { 
     var val = fld.value; 
     if (!val) val=0; 
     if (isNaN(val)) { 
     val=val.replace(re,""); // remove all nonDigits 
     } 
     if (val=="" || isNaN(val)) val = 0; // still not a number or empty 
     val = parseFloat(val) 
     fld.value=val.toFixed(2); 
     return val; 
     } 

     function calc(theForm) { 
     var val10 = val9 
     var valb = getGoodVal(theForm.lunch); 
     var val1 = getGoodVal(theForm.TRDO); 
     var val2 = getGoodVal(theForm.AnnualLeave); 
     var val3 = getGoodVal(theForm.PersonalLeave); 
     var val4 = getGoodVal(theForm.WorkFromHome); 
     var val5 = getGoodVal(theForm.TOIL); 

     total = (val9-valb) + (val1+val2+val3+val4+val5); 
     theForm.total.value=total.toFixed(2) 
     } 
     </script> 
+0

那個小提琴中的代碼是可怕的。它是否自動生成?你也忘了提及你使用一些模糊的日曆控件,什麼是'document.Edit'? – Raynos

+0

@Raynos,雖然我不能不同意你評論的內容,但我認爲這對幫助webb並不是很有幫助。 –

回答

2

當用戶選擇日期計算的價值,你的計算鏈接到一些JavaScript在選擇一個日期後調用事件。我注意到你試圖將你的calc()函數與文本輸入的onChange事件聯繫起來,這是行不通的。您可以將calc()函數鏈接到Calendar.setup的onSelect屬性。它看起來像這樣:

Calendar.setup({ 
    inputField : "StartTime", 
    trigger : "f_btn1", 
    onSelect : function() { this.hide(); calc(document.forms[0]); }, 
    showTime : 12, 
    dateFormat : "%Y-%m-%d %I:%M %p" 
    }); 

請注意,calc()被調用就像輸入元素的onChange屬性。但是,對錶單的引用更改,因爲表單不是日曆範圍的一部分:document.forms [0]。

您的用戶可能有一個功能來驗證是否更新結束時間,以使其不能早於開始時間。

+0

感謝您的洞察力,您是否會友好地協助它的工作。我可以在代碼中執行此操作,但不能在js中執行,所以我的困境越來越大。謝謝 – webb

+0

嘗試http://jsfiddle.net/GfN5u/4/ –

+0

這非常出色。我不能夠感謝你。如果我可能只問一個更愚蠢的問題,它不適用於IE 8 – webb