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。像这样:
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);