<telerik:RadDateTimePicker ID="rdtp_arrival" runat="server"></telerik:RadDateTimePicker>
<telerik:RadDateTimePicker ID="rdtp_departure" runat="server" ClientEvents-OnDateSelected="cng_departure"></telerik:RadDateTimePicker>
<telerik:RadNumericTextBox ID="rnt_night" runat="server" Culture="en-US" DataType="System.Int32" DbValueFactor="1" LabelWidth="64px" MinValue="1" ShowSpinButtons="True" Width="100%" ClientEvents-OnValueChanged="inc_check">
<NegativeStyle HorizontalAlign="Center" />
<NumberFormat ZeroPattern="n"></NumberFormat>
<DisabledStyle HorizontalAlign="Center" />
</telerik:RadNumericTextBox>
JS
function cng_departure() {
var datePicker11 = $find("<%= rdtp_arrival.ClientID %>");
var datePicker12 = $find("<%= rdtp_departure.ClientID %>");
var minutes = 1000 * 60;
var hours = minutes * 60;
var days = hours * 24;
var valueTbx = $find('<%=rnt_night.ClientID %>');
valueTbx.set_value(Math.ceil((datePicker12.get_selectedDate() - datePicker11.get_selectedDate()) / days));
}
function inc_check() {
var datePicker1 = $find("<%= rdtp_arrival.ClientID %>");
var datePicker2 = $find("<%= rdtp_departure.ClientID %>");
var date = datePicker1.get_selectedDate();
date.setDate(date.getDate() + parseInt($('#<%= rnt_night.ClientID %>').val()));
datePicker2.set_selectedDate(date);
}
当我增加夜晚或更改出发日期时,它会进入一个无限循环,它会互相调用inc_check和cng_departure方法,直到网站崩溃。 如果我从任何一个控件中删除onchange事件它可以正常工作。 现在该怎么办?
答案 0 :(得分:2)
创建JavaScript函数CalculateDateDifference(source,destination) 现在,将此函数附加到page_init事件中的两个文本框中,如下所示
rdtp_departure.Attributes.Add("onblur", @"javascript:CalculateDateDifference('"
+ rdtp_departure.ClientID + "','"
+ rnt_night.ClientID + "')");
rdtp_departure.Attributes.Add("onblur", @"javascript:CalculateDateDifference('"
+ rnt_night.ClientID + "','"
+ rdtp_departure.ClientID + "')");
现在在JavaScript函数中编写问题特定的逻辑。希望这会对你有所帮助。
答案 1 :(得分:1)
更改rdtp_departure
后,会调用cng_departure
,因此
ClientEvents-OnDateSelected="cng_departure"
cng_departure
更改了rnt_night
,因此调用了inc_check
。因为valueTbx
中的cng_departure
引用了rnt_night
并且set_value
被调用了。
inc_check
更改rdtp_departure
。因为datePicker2
引用了rdtp_departure
,并且在其上调用了set_selectedDate
。因此,再次执行从1到3的步骤。
这就是代码无限运行的原因。