gpt4 book ai didi

javascript - 跨领域的剑道网格验证

转载 作者:行者123 更新时间:2023-11-29 22:09:36 24 4
gpt4 key购买 nike

我正在尝试创建一些跨不同字段进行验证的验证规则。

我希望能够有规则“DateClosed 必须晚于 DateOpen”,但是当我使用我的自定义验证函数时,它只会传入 DateClosed 的数据。如何将 dateOpen 信息获取到我的验证函数中?

数据来源:

schema: {
model: {
id: "SomeId",
fields: {
SomeId: { editable: false, nullable: true },
Name: { editable: false, validation: { required: false } },
Description: { validation: { required: false } },
DateOpen: { type: "date", validation: { required: true } },
DateClosed: { type: "date", validation: { required: false, validationMessage: "Date Closed must be after Date Opened", custom: testValidation } },
}
}
}

验证函数:

            function testValidation(element) {
if (element[0] !== null) {
if (element[0].name === "DateClosed") {
//Date logic here
return false;
}
else
return true;
}
}

最佳答案

发现这很有趣,所以这是我的两分钱(实际上我想你已经解决了这个问题):

当您编辑网格(批量编辑)时,用户在验证时选择的值并未保存在数据源中,而是保存在单元格(脏单元格)引用的内存中。所以,你必须获取dom中其他字段的值。更安全的方法是通过了解列索引来找到您想要的单元格。硬编码永远不是一个好主意。所以……

var testValidation = function(element) {
var columnIndex = 0;
var grid = $("#grid").data("kendoGrid");

for (columnIndex; columnIndex < grid.columns.length; columnIndex++)
{
if (grid.columns[columnIndex].field == "DateOpen")
{
break;
}
}

var dateClosed = $(element).data("kendoDatePicker").value();
var dateOpen = (new Date($(element).closest("tr").find("td:eq(" + columnIndex + ")").text()));

return (dateOpen < dateClosed);
}

首先它通过循环获取列,然后是文本并将其计算为 Date目的。完成后,只需检查是否 dateOpen < dateClosed .

希望对您有所帮助。 Fiddle .

关于javascript - 跨领域的剑道网格验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18767409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com