2011-07-05 21 views
0

2つの日付間の時間を計算し、6つの数値フィールドを格納するフォームがあります。2つのjavascript関数を組み合わせてフォームを計算する

フォームが意図したとおりに動作するように、ユーザーが2つの日付の後に選択を開始するときにフォームにこれらの値を明示する必要があります。ページは私の意図は

http://jsfiddle.net/GfN5u/1/ jsファイルであるかをhere..of位置しています

サンプルでは、​​私は今週、ほとんどそこだが、私には静物公平ではないと感じHTML

をwithingています。

また、IE 8では、選択要素は内容が失われています..... jsfiddleでも。

ご協力いただければ幸いです。

は、ユーザーが日付を選択して、値を計算する日付を選択した後に呼び出され、いくつかのJavaScriptのイベントにあなたの計算をリンクするには

 <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

、ありがとうございました。 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プロパティと同様に呼び出されます。ただし、フォームがCalendarスコープの一部ではないため、フォームへの参照が変更されます。document.forms [0]。

開始時刻よりも早くなることができないように終了時刻を更新することを確認する関数をユーザーが持っていると便利でしょう。

+0

洞察力をお寄せいただきありがとうございます。働くことを手助けするほど親切になりますか?コードではできますがjsではできませんので、ジレンマが大きくなります。ありがとう – webb

+0

を試してみてくださいhttp://jsfiddle.net/GfN5u/4/ –

+0

それは素晴らしいです。私は十分にあなたに感謝することはできません。もし私がちょっと愚かな質問をしてもIE8ではうまくいきません。 – webb

関連する問題