Kendo UI Grid内联编辑定义最小验证的自定义值

时间:2014-08-17 10:10:47

标签: validation kendo-ui kendo-grid inline-editing custom-validators

我正在使用Kendo网格,并希望通过同一记录中的另一个字段验证一个字段的最小值。

意思是我的数据是这样的: -

var courses = [{
    CourseID : 1,
    CourseName : "iPhone",
    MinAge: 12,
    MaxAge : 22,
    MinAgeThreshold : 10,
    MaxAgeThreshold : 30,
    StartDate: "12/10/2014",
},
{
    CourseID : 2,
    CourseName : "Android",
    MinAge: 12,
    MaxAge : 22,
    MinAgeThreshold : 10,
    MaxAgeThreshold : 30,
   StartDate: "12/10/2014",
}]

我想在MinAge的验证最小值中使用MinAgeThreshold值,如下所示: -

schema: {
               model: {
                 id: "CourseID",
                 fields: {
                    CourseID: { editable: false, nullable: true },
                    StartDate: { editable: false, nullable: true },
                    CourseName: { editable: false, nullable: true },
                    MinAgeThreshold: { editable: false, nullable: true },
                    MinAge: { type: "number", validation: { required: true, min: MinAgeThreshold}                        },
                    MaxAge: { type: "number", validation: { required: true, min: 1} },

                 }

这有可能吗?

我尝试使用像这样的验证自定义函数

MinAge: {
                                type: "number",
                                validation: {
                                    required: true,
                                    minagevalidation: function (input) {
                                }
                            },

但是我无法在minagevalidation函数中检索MinAgeThreshold的值。

非常感谢任何帮助。

此致

2 个答案:

答案 0 :(得分:1)

您可以尝试下面给出的内容来提供自定义验证消息,强制用户根据同一个剑道网格中的其他输入字段设置大于最小值的值。

 MinAge: { type: "number",
                    validation: { 
                    required: true, 
                    MinAgevalidation: function (input) {
    if(input.is("[name='MinAge']") &&(parseInt($("input[type='text'][name='MinAge']").val()) < parseInt($("input[type='text'][name='UnitPrice']").val()))){
    input.attr("data-MinAgevalidation-msg", "MinAge should greater than MinAge threshold");

            return false;
    }

    return true;  
    }  

sample jsfiddle to set minimum value of one field based on other field's value .

答案 1 :(得分:0)

我想我可能会遇到这种问题的解决方案。如果要将字段的最大值设置为不同字段的值,可以将其添加到kendogrid的网格编辑方法中。

var grid = $("#grid").kendoGrid({
    edit: function(e){
        if ( e.container.find("input[data-find='value:MinAge']).length != 0 ){
            var numericTextBox = e.container.find("input[data-find='value:MinAge']).data("kendoNumericTextBox");
            numericTextBox.min(e.model.MinAgeThreshold);
        }
    }   
});

这会将MinAge输入的numerictTextBox设置为行(模型)的dataItem中的MinAgeThreshold的min。这也适用于step,max等。输入字段时会触发编辑。因此,如果初始值为0且您的MinAgeThreshold为其他值,则它将切换到MinAgeThreshold。