处理所有 DevExtreme 输入小部件的更改事件

Handle change event for all DevExtreme input widgets

我正在寻找一种方法来跟踪是否使用 DevExtreme 组件修改了表单字段。我以为我可以将它们全部绑定到一个事件侦听器:

$('input').change(function () {
    console.log("Change detected.");
});

虽然这会触发普通 <input> 元素,但 DevExtreme 组件(它们都使用底层隐藏的 <input> 元素)不会。这些组件有一个 onValueChanged 字段,可以分配一个功能,但我们的想法是不必对每个控件都这样做。我有几十个 dxTextBoxdxSelectBoxdxDateBox

的表格

Event handlers attached using the delegate() method will work for both current and FUTURE elements (like a new element created by a script).

我会推荐 jQuery Delegate 这种用法,即使它已被弃用,它也会有所帮助。

DevExtreme 小部件提供 defaultOptions(rule) 方法,允许为特定组件设置默认配置选项。

例如:

DevExpress.ui.dxTextBox.defaultOptions({ 
    device: { deviceType: "desktop" },
    options: {
        onValueChanged: function(e) {
           console.log("Change detected.");
        }
    }
});