2013-12-04 3 views
0

У меня возникла проблема с автозаполнением, что меня немного смущает. Сначала я сделал поиск, я не единственный, у кого есть эта проблема. Но все, кажется, используют автозаполнение jQuery по-своему, поэтому мне это действительно не помогло.jQuery UI autocomplete, показывающий код html

В любом случае, вот в чем проблема. Я создаю функцию поиска, которая должна показывать список пользователей, извлекаемых из базы данных mysql. Я получил это на работу. Поэтому, когда я начинаю печатать, он сразу показывает список пользователей. Что я хочу сделать дальше, это сделать ссылки на результаты, которые перенаправляют пользователя на другую страницу.

Здесь находится findartist.php;

if(isset($_GET['term'])){ 
$artist = new User(); 
$return_arr = array(); 
$results = $artist->findUser($_GET['term']); 
foreach($results as $result){ 
    $link = "<a href='profile/index.php?st=" . $result['stagename'] . "'/>" .  $result['stagename'] . "</a>"; 
    $return_arr[] = $link; 
    } 
echo json_encode($return_arr); 
} 

И вот jQuery;

<script> 
     $(function() { 
      //autocomplete 
      $(".artist_input").autocomplete({ 
       source: "/includes/findartist.php", 
       minLength: 1 
      }); 

     }); 
    </script> 

Проблема в том, что когда я это делаю, он показывает html-код. Так вот как это будет выглядеть;

<a href='profile/index.php?st=bob'/>bob</a> 

Есть ли способ исправить это?

+0

не возвращают ссылку HTML из findartist.php белых некоторые нажмите JS, чтобы изменить страницу –

+0

Не могут действительно делаю это. Еще нужно получить результат от findartist.php. – user2285451

ответ

0

Это не то, как автозаполнение настроено для работы. Он настроен на то, что вы возвращаете текст, который хотите отобразить. Он не может обрабатывать HTML так, как вы просите.

Однако, это не значит, что все потеряно ...

Вместо findartist возвращает массив <a> тегов, только имена исполнителей.

Затем вы записываете еще одну функцию, связанную с событием «select» объекта автозаполнения, который будет перемещаться по вашей странице.

Смотрите документацию для рассматриваемого события здесь: http://api.jqueryui.com/autocomplete/#event-select

Например, findartist.php может измениться на:

if(isset($_GET['term'])){ 

    $artist  = new User(); 
    $return_arr = array(); 
    $results = $artist->findUser($_GET['term']); 

    foreach($results as $result){ 
    $return_arr[] = $result['stagename']; 
    } 
    echo json_encode($return_arr); 
} 

И ваше автозаполнение может выглядеть примерно так:

<script> 
    $(function() { 
     //autocomplete 
     $(".artist_input").autocomplete({ 
      source: "/includes/findartist.php", 
      minLength: 1, 
      onSelect: function (suggestion) { 
       // event fires when the user selects something from the list. 
       window.location.href = "profile/index.php?st=" + suggestion; 
      } 
     }); 
    }); 
</script> 

Простите мне любые ошибочные скобки или синтаксическую ошибку - я кодирую без среды workign. Надеюсь, это все равно поможет.

Попробуй, посмотри, откуда.

0

вы можете работать на форме представить, что это лучший способ перенаправлен на страницу результатов

  $(document).ready(function(){ 
       $(".artist_input").autocomplete({ 
      source: "/includes/findartist.php", 
        minLength:1, 

        select: function(event, ui) { 
        $("#name").val(ui.item.label); 
        $("#form").submit();   
     } 
       }); 

      });