我在组合框上使用了自定义验证器:
function(v) {
console.log(v === 'some value I know for SURE is in the store'); // (1)
var index = this.getStore().findExact(this.displayField, v);
return (index!==-1) ? true : 'Invalid selection';
}
基本上接受与forceSelection相同的设置,但允许用户键入任意文本以尝试自动完成。
然而; 我对的结果确实很奇怪findExact()
。例如,如果组合框的值当前有效,并且用户执行空格+退格键,则即使(1)的输出为true,验证器也会失败。
任何想法导致问题的原因是什么?目前的最终体验是越野车的感觉。
当您键入其他空间时,将过滤存储。按退格键并触发验证器后,存储仍为空。
如果您有本地存储,则可以在每次更改后延迟一些时间来验证组合。例:
listeners: {
change: function() {
this.validate();
},
delay: 100
}
那应该足够了。
另一方面,如果您有远程存储,请尝试以下操作:
validator: function(v) {
var store = this.getStore(),
index = store.findExact(this.displayField, v);
if (index === -1 && store.isLoading()) {
store.on('load', function() {
this.validate();
}, this, { single: true, delay: 100 });
}
return (index !== -1) ? true : 'Invalid selection';
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句