我正在使用kendo ui controls.my功能是根据日期时间和下拉选择过滤网格。这适用于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,任何人都可以查看代码,请告诉我哪里错了?
答案 0 :(得分:0)
我一直在测试你的代码而且我找不到它的任何问题,除了你最后有一个额外的)
,但这可能是因为该函数是从更大的代码段中删除的。
然而,有几件事可能导致这个问题,并且有很多代码丢失,所以我不能肯定地说。有些浏览器试图通过忽略您所犯的错误来帮助您。这可以使它在Chrome中运行,但不能在FF和IE中运行。处理此问题的最佳方法是遍历代码并添加验证,以便在每次调用Filter方法时确认值。以下是我给你的建议:
mindate
和maxdate
是否为空,但如果它们是undefined
或包含空值,则会通过该测试并将其添加到过滤器中即使他们没有设置。mindate
和maxdate
添加到过滤器之前,您没有检查date
和$("#network").val()
是否为有效日期以及您是否能够成功创建JavaScript head
变量。这可能是错误的根源,具体取决于脚本中的其他代码。html
等中的值而不验证它们,这可能会在将来导致问题。但这不会导致此错误。编辑:编码
您需要确保网页的编码正确无误。请确保Views\Shared\_Layout.cshtml
代码的head
部分中存在这两行。如果使用ASP.NET MVC,则可以将这两个文件添加到<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="utf-8" http-equiv="encoding">
文件中。如果使用ASP.NET Forms,则可以在Masterfile中添加它们。如果你使用PHP,你只需将它们放在{{1}}部分。
{{1}}