繁体   English   中英

如何检查Kendo UI ComboBox是否脏(即值已从默认值更改)?

[英]How to check if Kendo UI ComboBox is Dirty (i.e. value has been changed from default value)?

我有一个简单的Kendo ComboBox

HTML:

<div>
    <h5>Brand</h5>
    <div id="combo1"></div>
</div>

JavaScript:

j$("#combo1").kendoComboBox({
    dataTextField: "name",
    dataValueField: "id",
    value: "Original_Brand_Value",
    dataSource: {
        transport: {
            read: {
                url: "..."
            }
        }
    }
});

请注意, ComboBox的默认初始值为"Original_Brand_Value" 如何检查Kendo ComboBox是否为“脏”,即当前是否具有"Original_Brand_Value"以外的其他值 似乎我应该能够执行以下操作:

j$("#combo1").data("kendoComboBox").isChanged() 
**OR**
j$("#combo1").data("kendoComboBox").dataSource.isChanged() 

但是我进行了广泛的搜索,似乎没有这种方法。 必须有某种方法可以做到这一点,这必须是一个常见的用例。

您可以使用value()方法检查当前窗口小部件值并将其与初始值进行比较,但是这种方法可能不太合适,因为它太明显了。

http://docs.telerik.com/kendo-ui/api/javascript/ui/combobox#methods-value

另一个可能的选择是订阅小部件的change事件,并在JavaScript变量中引发自定义脏标志。 您甚至可以在ComboBox小部件对象上设置一个expando。

http://docs.telerik.com/kendo-ui/api/javascript/ui/combobox#events-change

附带说明一下,ComboBox是一个输入小部件,应保存并提交表单值。 这就是为什么应该从inputselect元素而不是从div创建它的原因。

如您所得出的结论,kendoComboBox小部件本身不会跟踪其是否已更改状态。 数据源确实具有hasChanges()方法,但是进行选择不会更改数据源,它只是从中获取了不同的值。 但是kendoComboBox确实会引发您可以使用的事件,例如当用户进行选择时会触发的“ select”事件: http : //docs.telerik.com/kendo-ui/api/javascript/ui/combobox#events-选择

例如,您可以将其添加到comboBox配置中:

select: function(e) {
    var item = e.item; //jQuery object representing the selection
    isDirty = true; //Set a flag or call a function as required. Perhaps check the item as well to make sure it isn't the default value.
}

或者,还有一种称为“选择”的方法,可用于获取或设置所选项目。 您可以使用它来获取选定的索引(如果它不为零,则comboBox具有非默认选择):

var selectedIndex = j$("#combo1").data("kendoComboBox").select();

这不是唯一的方法。 如果将MVVM声明性语法与kendo.Data.Model上的属性绑定的comboBox结合使用(可观察),则任何更改都会自动在该模型上设置脏标志: http : //docs.telerik.com/ kendo-ui / api / javascript / data / model#fields-dirty

MVVM是与剑道一起使用的一种非常强大的设计模式,但我认为更详细的讨论超出了您所要求的范围。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM