【问题标题】:Kendo Grid: using model.set to update the value of required fields triggers validation errorKendo Grid:使用 model.set 更新必填字段的值会触发验证错误
【发布时间】:2014-04-06 10:46:14
【问题描述】:

我有一个使用自定义弹出编辑器的 Kendo Grid。其中一个字段是使用远程数据源的 Kendo 下拉列表。

当用户进行选择时,与所选项目相关联的数据用于更新弹出编辑器中的其他几个字段,使用 model.set

这运行良好:模型和字段已更新。

但是,如果我随后将 required validationMessage="This field is required" 添加到由 model.set 更新的字段中,则会触发验证错误并且不会更新字段。

我设置了一个JSFiddle 来演示这个问题。在这种情况下,可以通过单击Set Product 按钮来设置自定义弹出编辑器中的 ProductName。您会注意到触发了验证错误,但如果您从字段中删除 required 属性,它会正确更新。

这是一个错误吗?为什么设置值时会触发验证错误?

编辑:只是为了澄清——这是在添加新记录时,而不是编辑现有记录。

【问题讨论】:

    标签: kendo-ui kendo-grid


    【解决方案1】:

    当您为 ProductName 分配值时,您实际上失去了 input 的焦点,这会触发验证并使其抱怨将其留空。

    解决方案是首先将值分配给input,然后执行set

    var win = $(this).closest("[data-role=window]");
    var uid = win.data("uid");
    var input = $("[name='ProductName']", win); 
    // Assign value (anything works)
    input.val("Test Product");
    var model = $("#grid").data("kendoGrid").dataSource.getByUid(uid);
    model.set('ProductName','Test Product');
    

    您的 Fiddle 已在此处修改:http://jsfiddle.net/OnaBai/ZPuS8/8/

    【讨论】:

    • 你好 Onabai。感谢那。我实际上已经注意到我以前可以这样做,但希望没有必要,因为我广泛使用这种技术(并希望避免代码加倍)。我仍然不能 100% 确定它为什么会发生,因为被赋值的输入一开始就没有焦点。无论如何,我想通过并添加额外的行不会花费太长时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-31
    • 1970-01-01
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多