JavaScript查找月份差异并使用另一个值进行计算

本文关键字:另一个 计算 查找 JavaScript | 更新日期: 2023-09-27 17:57:48

我正在ASP.NET c#中开发一个网格视图。在网格视图中,如果有4个文本框,其中

1st field - hire/month
2nd field - from date
3rd field - to date
4th field - required machine month

这个概念是这样运作的。

from_date和to_date之间的差值应按月份计算,并应乘以hire/month以获得required_machine_month字段。请帮我一下。

我不懂JavaScript,尽管我尽了最大的努力,得到了一个函数中的差异,并将该函数调用到另一个函数,然后将其相乘以获得输出。

但是JavaScript完全失败了,而且似乎不起作用。请给我一个好剧本。

JavaScript查找月份差异并使用另一个值进行计算

您可以在类中创建一个返回计算值的属性,并将该属性放入网格中,因此不需要使用Javascript。像这样:

   public string RequiredMachineMonth
   {
       get
       {
            return ... //Your logic based on 'to' and 'from' here
       }
   }

如果您在网格中使用TemplateField并将文本框设置为class属性,则可以使用JQuery作为一种简单的方法:

<asp:TemplateField>
    <ItemTemplate>
        <input type="text" class="to-date"/>
    <ItemTemplate>
</asp:TemplateField>

并假设您已经给出了这样的类:hire-month',到日期,从日期,必需'然后在jquery 中使用类似的东西

<script type="text/javascript">
    $(document).ready(function(){
        $('.to-date, .from-date').change(function(){
            var required = $(this).parent().children('.required');
            var toDate = $(this).parent().children('.to-date').val();
            var fromDate = $(this).parent().children('.from-date').val();
            required.val(toDate + fromDate); //put your logic here
        });
    });
</script>
var DisplayTo = new Date();
var DisplayFrom = new Date("2012-03-05");
var diff = DisplayTo.getMonth() - DisplayFrom.getMonth() + (12 * (DisplayTo.getFullYear() - DisplayFrom.getFullYear()));
var machineMonth = hiremonth * diff;

你试过这个吗?

感谢您的帮助。。终于我把剧本写好了。但这是一个漫长的过程。我把它张贴在下面供任何人使用。如果有人不清楚。请随意询问,这样我就可以告诉你我做了什么。

<script type="text/javascript" language="javascript">
function req_mac_month(numbers,fromDate,toDate,mcMonth)
{
    //alert("Executed");
    var reqnum=document.getElementById(numbers).value;
    var sdate=document.getElementById(fromDate).value;
    var edate=document.getElementById(toDate).value;
    //var diff=DisplayTo.getMonth() - DisplayFrom.getMonth() + (12 * (DisplayTo.getFullYear() - DisplayFrom.getFullYear()));
    //var diff=Math.ceil((DisplayTo.getTime()-DisplayFrom.getTime())/(1000*60*60*24));
    var day1, day2;
    var month1, month2;
    var year1, year2;
    //var noofmonths;
    day1 = sdate.substring(0, sdate.indexOf("-"));
    month1 = sdate.substring(sdate.indexOf("-") + 1, sdate.lastIndexOf("-"));
    year1 = sdate.substring(sdate.lastIndexOf("-") + 1, sdate.length);
    day2 = edate.substring(0, edate.indexOf("-"));
    month2 = edate.substring(edate.indexOf("-") + 1, edate.lastIndexOf("-"));
    year2 = edate.substring(edate.lastIndexOf("-") + 1, edate.length);
    date1 = year1 + "/" + month1 + "/" + day1;
    date2 = year2 + "/" + month2 + "/" + day2;
    firstDate = Date.parse(date1)
    secondDate = Date.parse(date2)
    msPerDay = 24 * 60 * 60 * 1000
    dbd = trunc(((Math.round(((secondDate.valueOf() - firstDate.valueOf()) / msPerDay) + 1))/30),4);
            reqmcmonthtotal = dbd * reqnum ;
            document.getElementById(mcMonth).value= reqmcmonthtotal;
    return true;      
}
</script>

在…后面的代码中。。。,

TextBox rnum = grvps.FooterRow.FindControl("Ftxteditreqnum") as TextBox;
TextBox fromDate = grvps.FooterRow.FindControl("txtFromDate") as TextBox;
TextBox toDate = grvps.FooterRow.FindControl("txtEndDate") as TextBox;
TextBox mcMonth = grvps.FooterRow.FindControl("Ftxteditreqmcmth") as TextBox;
string req_mac_month = string.Format("return req_mac_month('{0}','{1}','{2}','{3}');", rnum.ClientID, fromDate.ClientID, toDate.ClientID, mcMonth.ClientID);
rnum.Attributes.Add("onchange", req_mac_month);
fromDate.Attributes.Add("onchange", req_mac_month);
toDate.Attributes.Add("onchange", req_mac_month);