2015-04-21 1 views
0

Extjs 5.Найти определенные слова в значениях tagfield

Мое приложение имеет форму с 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)? Кроме того, я не совсем уверен, что это за цель цикла ... это выглядит странно. – incutonez

+0

Спасибо за помощь в интуненезе. – 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); 
    } 
} 

Fiddle: http://jsfiddle.net/wsm6an0n/2/

Если вы хотите использовать подстановочные как поиск, используйте indexOf вместо Comparision:

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); 
    } 
} 

Fiddle: http://jsfiddle.net/rq90eLh4/1/

+0

Thank's Krzysztof. Это было именно то, чего я пытался добиться. Это очень помогло. – josei

+0

Hi Krzysztof. Еще одна деталь: Как я могу удалить добавленное поле динамически, когда я удаляю один из элементов, выбранных в tagfield? Еще раз спасибо. Fiddle: https://fiddle.sencha.com/#fiddle/lpb – josei

+0

Я думаю, что самый простой способ - использовать событие beforedeselect. Также переключение с 'select' на' beforeselect' упрощает код: http://jsfiddle.net/rq90eLh4/3/ – Krzysztof