我已经在点击了一个html按钮上写了一个函数,该按钮在服务器上运行'前端的asp标签如下:
<button id="hidePast" runat="server" visible="True"><i class='fa fa-eye-slash'></i> Hide/Show Past Bookings</button>
我希望根据If语句打开和关闭一行。从调试代码开始,它会采用正确的路径来访问.toggle(),但是当它发生时,您可以在回发期间看到屏幕闪烁,并且您可以看到该行消失并设置重新添加。
到目前为止,我已尝试过:
到目前为止,这些都没有奏效。 JS代码是:
$(document).on('click','#ctl00_content_hidePast',function (e) {
e.stopImmediatePropagation();
var dt = new Date($.now() - 30 * 60000);
var time = dt.getHours() + ":" + dt.getMinutes() + ":" + dt.getSeconds();
var state = $("#ctl00_content_hdnPastBookingToggle").val();
$("td.bgtime").each(function() {
var bookingTime = ($(this).text().split(':'));
var d = new Date();
d.setHours(+bookingTime[0]);
d.setMinutes(bookingTime[1]);
if ($(d) > time) {
var timeRow = $(this).parent();
$(timeRow).toggle();
};
});
if (state === "0") {
$("#ctl00_content_hdnPastBookingToggle").val("1");
}
else if (state === "1") {
$("#ctl00_content_hdnPastBookingToggle").val("0");
};
return false;
});
});
答案 0 :(得分:0)
以下工作最终。
将按钮更改为:
<button id="hidePast" runat="server" onclick="return false;" causesvalidation="false" visible="True"><i class='fa fa-eye-slash'></i> Hide/Show Past Bookings</button>
和JQuery:
$(function togglePast () {
$(document)
.on('click',
'#ctl00_content_hidePast',
function (e) {
e.preventDefault();
var dt = new Date($.now() - 30 * 60000);
var time = dt.getTime();
var state = $("#<%= hdnPastBookingToggle.ClientID %>").val();
$("td.bgtime")
.each(function() {
var bookingTime = ($(this).text().split(':'));
var d = new Date();
d.setHours(parseInt(bookingTime[0]));
d.setMinutes(parseInt(bookingTime[1]));
var rowTime = d.getTime();
console.log("Now: " + time + " Time from row: " + rowTime);
if (rowTime < time) {
var timeRow = $(this).parent();
$(timeRow).toggle("slow");
};
});
if (state === "0") {
$("#<%= hdnPastBookingToggle.ClientID %>").val("1");
} else if (state === "1") {
$("#<%= hdnPastBookingToggle.ClientID %>").val("0");
};
return false;
});
});
我做的最大的改变是按钮,那就是添加onclick="return false;" causesvalidation="false"
,因为上面的内容在没有按钮的情况下无效。