我正在使用kendo ui控件。我的功能是根据日期-时间和下拉选择筛选网格。这在chrome上有效,但在FF和IE中无效。
var gridResult = $('#Grid').data("kendoGrid");
var condition = {
logic: "and",
filters: [
{ field: "Category", operator: "equals", value: $("#nw").val() },
{ field: "Device", operator: "equals", value: $("#pro").val() },
{ field: "Orig", operator: "equals", value: $("#work").val() },
{ field: "Term", operator: "equals", value: $("#network").val() }
]
};
if (mindate !== null) {
condition.filters.push({ field: "Time", operator: "ge", value: new Date(mindate) });
}
if (maxdate !== null) {
maxdate = new Date(maxdate);
maxdate.setHours(23, 59, 59, 999);
condition.filters.push({ field: "Time", operator: "lt", value: maxdate });
}
gridResult.dataSource.filter(condition);
return false;
});
$('#fromdatetimepicker').attr('readonly', false);
$('#todatetimepicker').attr('readonly', false);
}
当我在firefox中调试时,我没有发现aby bug。任何人都可以查看代码,并告诉我哪里错了吗?
我一直在测试您的代码,但没有发现任何问题,此外,您在末尾有一个额外的)
,但这可能是因为该函数是从更大的代码段中截取的。
然而,有几件事可能会导致这个问题,并且有很多代码丢失,所以我不能确定。一些浏览器试图通过忽略您所犯的错误来帮助您。这可以使它在Chrome中工作,但在FF和IE中不起作用。处理这一问题的最佳方法是在每次调用Filter方法时仔细检查代码并添加确认值的验证。以下是我给你的建议:
- 在Internet Explorer中调试时,请使用IE 11并使用F12调试工具
- 您检查
mindate
和maxdate
是否为空,但如果它们是undefined
或包含空值,则它们将通过该测试,并将添加到筛选器中,即使它们未设置 - 在将
mindate
和maxdate
添加到过滤器之前,您不需要检查它们是否为有效日期,以及是否能够成功创建JavaScriptdate
变量。这可能是错误的来源,具体取决于脚本中的其他代码 - 您直接在过滤器中使用
$("#network").val()
等中的值,而不验证它们,这可能会在将来造成问题。但这并不是造成这个错误的原因
编辑:编码
您需要确保网页的编码是正确的。请确保这两行存在于html
代码的head
部分中。如果使用ASP.NET MVC,则可以将这两个文件添加到ViewsShared_Layout.cshtml
文件中。如果使用ASP.NET表单,则可以将它们添加到主文件中。如果你使用PHP,你只需要把它们放在head
部分。
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="utf-8" http-equiv="encoding">