Javascript 如何使用Java脚本从用户在asp.net中输入的数据中获取以天为单位的两个日期之间的差异
我想做一些计算,得到用户在文本框中输入的两个日期的差值,并将其显示在标签或文本框中。 我的其中一个日期是固定日期,显示在名为Asofdate的标签中。 用户将在DOL文本框中输入第二个日期 以下是我的html代码:Javascript 如何使用Java脚本从用户在asp.net中输入的数据中获取以天为单位的两个日期之间的差异,javascript,c#,asp.net,datetime,Javascript,C#,Asp.net,Datetime,我想做一些计算,得到用户在文本框中输入的两个日期的差值,并将其显示在标签或文本框中。 我的其中一个日期是固定日期,显示在名为Asofdate的标签中。 用户将在DOL文本框中输入第二个日期 以下是我的html代码: <tr> <td style="font-weight: bold; text-align:left; width:80px"> As of Date: </td> <td> <
<tr>
<td style="font-weight: bold; text-align:left; width:80px"> As of Date: </td>
<td>
<asp:Label ID="lblAsOfDate" runat="server" Text="04/15/2018">/asp:Label>
</td>
</tr>
<tr>
<td class="ColWidth">
<span class="red" style="color: #FF0000; font-weight: bold;">*</span>
<asp:Label ID="lblDOL" runat="server" Text="DOL "></asp:Label>
</td>
<td class="InputCallWidth" style="vertical-align: top;">
<asp:TextBox ID="txtDOL" runat="server" placeholder="MM/DD/YYYY"
Height="25px" Width="120px" Enabled="True" onkeyup="getTotalDaysDown();"
ClientIDMode="Static">
</asp:TextBox>
<br />
<ajaxToolkit:MaskedEditExtender ID="MaskedEditExtender3"
runat="server"
ClearMaskOnLostFocus="true"
AutoComplete="false"
MaskType="Date"
Mask="99/99/9999"
InputDirection="LeftToRight"
TargetControlID="txtDOL">
</ajaxToolkit:MaskedEditExtender>
<ajaxToolkit:MaskedEditValidator ID="MaskedEditValidator3"
ControlExtender="MaskedEditExtender3"
runat="server"
ControlToValidate="txtDOL"
IsValidEmpty="False"
EmptyValueMessage="Date is Required!"
Display="Dynamic" ValidationGroup="logSave"
InvalidValueMessage='Invalid Date!' Font-Size="Smaller"
Font-Bold="True" ForeColor="Red"
MaximumValue="12/31/9999" MaximumValueMessage="Invalid Date!"
MinimumValue="1/1/1754 " MinimumValueMessage="Invalid Date!">
</ajaxToolkit:MaskedEditValidator>
</td>
<tr>
截至日期:
/asp:标签>
*
这是我使用脚本进行计算的部分。
这是公式:(AsOfDate-Dol)+1
函数getTotalDaysDown(){
//这是我遇到问题的部分。我无法从标签和文本框中获取值。
var AsOfDate=document.getElementById(“lblAsOfDate”).value;
var DOL=document.getElementById(“txtDOL”).value;
var diff=(新日期(AsOfDate)-新日期(DOL))/(1000*60*60*24);
//我的lblDaysDown标签中没有填充结果。
//在控制台中,我得到一个错误“无法读取null的属性'value'”
document.getElementById(“”).innerHTML=(diff+1);
返回false;
}
如果ASP端的一切都正常,并且您获得了正确的ID,那么这应该是可行的
<script language="javascript" type="text/javascript">
function getTotalDaysDown() {
//Here is the part that I have problem. I can't get the values from label and textbox.
var AsOfDate = new Date(document.getElementById("<%=lblAsOfDate.ClientID %>").innerHTML); //Value should be 04/15/2018 according to your image
var DOL = new Date(document.getElementById("<%=txtDOL.ClientID %>").value); //Value should be 11/01/2017 according to your image
var diff = (AsOfDate - DOL) / (1000 * 60 * 60 * 24);
document.getElementById('<%=lblDaysDown.ClientID %>').innerHTML = (diff + 1);
return false;
}
</script>
函数getTotalDaysDown(){
//这是我遇到问题的部分。我无法从标签和文本框中获取值。
var AsOfDate=new Date(document.getElementById(“”.innerHTML);//根据您的图像,该值应为2018年4月15日
var DOL=new Date(document.getElementById(“”.value);//根据您的图像,值应该是2017年1月11日
var diff=(AsOfDate-DOL)/(1000*60*60*24);
document.getElementById(“”).innerHTML=(diff+1);
返回false;
}
如果在所有控件上使用ClientIDMode=“Static”
(或在web.config
中将其永久设置),则不必使用嵌入式代码块。您只需使用document.getElementById(“lblAsOfDate”)
。有很多“日期差异”的问题,所以,确保你搜索。我还没有检查JS;什么不起作用?@wazz我无法从脚本中的文本框和标签中检索该值。如果我将固定日期传递到脚本本身的变量中,用于计算差异的计算部分工作正常。但是当我试图检索值时,它却没有。在AsOfDate
和DOL
中得到了什么<代码>未定义?元素?错误?@egvaldes我的标签中没有填充任何内容。我的标签将保留在JS代码中,当您定义AsOfDate
和DOL
时,您已经获得了值,这意味着这些变量将是字符串,然后当您进行计算时,您将再次获得value属性,该属性将未定义,您必须在声明或计算中去掉.value
。当您执行新建日期(AsOfDate.value)
时,应该会出现无效的日期错误155@user2116846AsOfDate和DOL VAR中存储了什么?这些应该是日期对象,它们是日期。看我包括的那张照片。您可以使用提供的链接找到它。就在txtDOL中,我使用的是ajaxtoolkitcontrol日期掩码。我已将其包含在上述html部分的代码中。@user2116846如果执行document.getElementById(“”.value
操作时得到一个带日期的字符串,则无所谓。我建议您使用调试器并逐步执行函数。
<script language="javascript" type="text/javascript">
function getTotalDaysDown() {
//Here is the part that I have problem. I can't get the values from label and textbox.
var AsOfDate = new Date(document.getElementById("<%=lblAsOfDate.ClientID %>").innerHTML); //Value should be 04/15/2018 according to your image
var DOL = new Date(document.getElementById("<%=txtDOL.ClientID %>").value); //Value should be 11/01/2017 according to your image
var diff = (AsOfDate - DOL) / (1000 * 60 * 60 * 24);
document.getElementById('<%=lblDaysDown.ClientID %>').innerHTML = (diff + 1);
return false;
}
</script>