Javascript 如何在extjs中验证itemselecter的drop事件数据?
我们不希望在所选项目中再次添加三个单词。 我们希望对拖放事件进行验证,并需要显示您已添加此记录的消息。Javascript 如何在extjs中验证itemselecter的drop事件数据?,javascript,extjs,extjs3,Javascript,Extjs,Extjs3,我们不希望在所选项目中再次添加三个单词。 我们希望对拖放事件进行验证,并需要显示您已添加此记录的消息。 我尝试使用下面的代码,但无法对相关事件进行验证 listeners: { added:function(obj,event){ console.log("added"); },change:function(obj,event){ console.log("ch
我尝试使用下面的代码,但无法对相关事件进行验证
listeners: {
added:function(obj,event){
console.log("added");
},change:function(obj,event){
console.log("change");
},removed:function(obj,event){
console.log("removed");
}, blur:function(obj,event){
console.log("blur");
}, click: function( obj) {
console.log('click');
}, select: function( obj) {
console.log('select');
}
}
请参阅下面所附的图片
我使用的是Extjs 3.4当选择或取消选择某个项目时会触发事件。。。但在这个阶段,你将无法再阻止它了。因此,显然,您最好的做法是覆盖该方法:
{
xtype:'itemselector'
//…配置
,onAddBtnClick:function(){
var me=这个,
selected=me.getSelections(me.fromField.boundList),
i、 l、记录;
var toStore=this.toField.boundList.getStore(),
idField='value'、//或'id',或您想要的任何内容
选择edids=Ext.pull(Ext.pull(toStore.getRange(),'data'),idField),
接受=[],拒绝=[];
对于(i=0,l=selected.length;i如果您不想让它被选中两次,为什么要在可用项中提供两次?因为有两种不同的列表方法调用。我们不知道较早选择了哪个项如果我是您,我会过滤可供选择的项,以避免重复,而不是阻止用户选择当然,我的意思是你应该说明你正在使用的版本,特别是如果它不是Sencha发布的最后一个版本的话。
{
xtype: 'itemselector'
// ... config
,onAddBtnClick: function() {
var me = this,
selected = me.getSelections(me.fromField.boundList),
i, l, record;
var toStore = this.toField.boundList.getStore(),
idField = 'value', // or 'id', or whatever you want
selectedIds = Ext.pluck(Ext.pluck(toStore.getRange(), 'data'), idField),
accepted = [], rejected = [];
for (i=0, l=selected.length; i<l; i++) {
record = selected[i];
if (selectedIds.indexOf(record.get(idField)) === -1) {
accepted.push(record);
} else {
rejected.push(record);
}
}
if (rejected.length) {
// warning msg
}
me.moveRec(true, accepted);
me.toField.boundList.getSelectionModel().select(accepted);
}
}