2015-05-28 1 views
1

Я использую автозаполнение для своего флеш-приложения. Автозаполнение использует внешний текстовый файл. Когда я печатаю первое слово предложения, он отображает все предложения, начинающиеся с этого слова.Autocomplete Искать любое слово в предложении

Можно ли отобразить все предложения, содержащие это слово (а не только начало предложения)?

Пример: У меня есть две фразы: «Я иду в школу» и «Я буду искать его».

Я хотел был бы иметь возможность напечатать «школа» и что он показывает первое предложение.

Вы знаете, как я могу это сделать? На данный момент я должен ввести «I'm going to s», чтобы отобразить первое предложение.

Вот мой код:

urlLoader.load(new URLRequest("test.txt")); 
      urlLoader.addEventListener(Event.COMPLETE, loadComplete); 
      inputField.addEventListener(KeyboardEvent.KEY_UP, suggest); 

function loadComplete(e:Event):void 
     { 
      suggestions = e.target.data.split(","); 
     } 

     function suggest(e:KeyboardEvent):void 
     { 
      suggested = []; 

      for (var i:int = 0; i < textfields.length; i++) 
      { 
       removeChild(textfields[i]); 
      } 

      textfields = []; 

      for (var j:int = 0; j < suggestions.length; j++) 
      { 
       if (suggestions[j].indexOf(inputField.text.toLowerCase()) == 0) 
       { 
        var term:TextField = new TextField(); 
        term.width = 300; 
        term.height = 20; 
        term.x = 70; 
        term.y = (20 * suggested.length) + 314; 
        term.border = true; 
        term.borderColor = 0x353535; 
        term.background = true; 
        term.backgroundColor = 0xFF9900; 
        term.textColor = 0x4C311D; 
        term.defaultTextFormat = format; 

        term.addEventListener(MouseEvent.MOUSE_UP, useWord); 
        term.addEventListener(MouseEvent.MOUSE_OVER, hover); 
        term.addEventListener(MouseEvent.MOUSE_OUT, out); 
        term.addEventListener(MouseEvent.CLICK, tellMe); 

        addChild(term); 
        textfields.push(term); 

        suggested.push(suggestions[j]); 

        term.text = suggestions[j]; 
       } 

      } 

      if (inputField.length == 0) 
      { 
       suggested = []; 

       for (var k:int = 0; k < textfields.length; k++) 
       { 
        removeChild(textfields[k]); 
       } 

       textfields = []; 
      } 

      if(e.keyCode == Keyboard.DOWN && currentSelection < textfields.length-1) 
      { 
       currentSelection++; 
       textfields[currentSelection].textColor = 0x4C311D; 
      } 

      if(e.keyCode == Keyboard.UP && currentSelection > 0) 
      { 
       currentSelection--; 
       textfields[currentSelection].textColor = 0x4C311D; 
      } 

      if(e.keyCode == Keyboard.ENTER) 
      { 
       inputField.text = textfields[currentSelection].text; 

       suggested = []; 

       for (var l:int = 0; l < textfields.length; l++) 
       { 
        removeChild(textfields[l]); 
       } 

       textfields = []; 
       currentSelection = 0; 
      } 
     } 

     function useWord(e:MouseEvent):void 
     { 
      inputField.text = e.target.text; 

      suggested = []; 

      for (var i:int = 0; i < textfields.length; i++) 
      { 
       removeChild(textfields[i]); 
      } 

      textfields = []; 
     } 

Спасибо

ответ

1

Изменить состояние от:

suggestions[j].indexOf(inputField.text.toLowerCase()) == 0 

в

suggestions[j].indexOf(inputField.text.toLowerCase()) != -1