2015-04-21 59 views
0

Extjs 5.查找tagfield值中的某些單詞

我的應用程序有一個帶有超過200個項目的標記欄的表單。

其中大約30個這些項目包含單詞「另一件事」(例如)。 每次我選擇這些項目中的一個時,都應該動態添加到textareafield窗體中。

我嘗試了幾個沒有成功的解決方案,包括使用match(),indexOf()和search()javascript方法。

onSelect : function (combo, records, eOpts) { 
    var records = combo.getValue(); 
    for (var i = 0, count = records.length; i < count; i++) { 
      while(records[i] == '%another thing%'){ //I know this is not the right way; Just to show what I'm looking for 
       console.log('OK'); //logic... 
       return; 
      } 
     } 
    }, 

我會很感激的建議。

在此先感謝。

+0

你可以發佈一個例子可能[Sencha Fiddle](https: //fiddle.sencha.com/#home)?另外,我不確定那個while循環的目的是什麼......看起來很奇怪。 – incutonez

+0

感謝您幫助incutonez。 – josei

回答

1

試試這個代碼:

onSelect: function (field, records, opts) { 
    // records parameter already contains all selected tags 
    var found = Ext.Array.filter(records, function(r) { 
     // conditions go here 
     return r.get('text') === 'aardvark' || 
      r.get('text') === 'aardwolf'; 
    }); 
    // check if we found anything 
    if (found.length > 0) { 
     console.log(found); 
    } 
} 

小提琴:http://jsfiddle.net/wsm6an0n/2/

如果你想使用通配符像搜索,使用indexOf,而不是比較的:

onSelect: function (field, records, opts) { 
    // records parameter already contains all selected tags 
    var found = Ext.Array.filter(records, function(r) { 
     // conditions go here 
     return r.get('text').indexOf('aa') !== -1; // LIKE '%aa%' 
    }); 
    // check if we found anything 
    if (found.length > 0) { 
     console.log(found); 
    } 
} 

小提琴:http://jsfiddle.net/rq90eLh4/1/

+0

謝謝Krzysztof。這正是我想要完成的。 它幫助了很多。 – josei

+0

嗨Krzysztof。 另請參見: 如何刪除在tagfield中選擇的某個項目時動態添加的字段? 再次感謝。小提琴:https://fiddle.sencha.com/#fiddle/lpb – josei

+0

我想最簡單的方法是使用'beforedeselect'事件。從'select'切換到'beforeselect'也使得代碼更簡單:http://jsfiddle.net/rq90eLh4/3/ – Krzysztof