结合两个javascript函数来计算表单

时间:2011-07-05 14:26:38

标签: javascript jquery

我有一个表单,用于计算两个日期之间的时间,并存储6个数字字段。

我想知道,当用户在两个日期之后开始选择时,表格会将这些值包含在内,以便表单按预期工作。

示例页面位于此处..我的意图是什么

http://jsfiddle.net/GfN5u/1/ js正在使用html

我觉得我差不多了,但本周生活对我不公平。

同样在IE 8中,选择元素会丢失其内容.....即使在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>   

1 个答案:

答案 0 :(得分: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属性一样。但是,对表单的引用会更改,因为表单不是Calendar范围的一部分:document.forms [0]。

您的用户可能会有一个功能可以验证更新结束时间,以便它不能早于开始时间。