2016-01-29 2 views
1

Я пытаюсь создать мгновенный поиск с помощью jQuery и ajax. И как-то он работает нормально, но я использовал вспомогательную навигацию для отображения результатов. Проблема в том, что subnav сползает вниз, но его исчезновение исчезает, когда оно не должно.sub nav не сползает правильно

Html

<ul> 
<li> 
<form> 

    <input type="text" id="keyword"> 

</form> 
<ul class="subnav"> 

</ul> 
</li> 
</ul> 

JQuery: -

$(document).ready(function() { 

     if ($(this).val().length != "") { 

      $('.submenu').slideDown() 

      $.ajax({ 

       type: "POST", 

       url: "test.php", 

       data: 'keyword=' + $(this).val(), 

       success: function(data) { 

        $('.submenu').html(data); 

       } else { 

        $('.submenu').slideUp() 
       } 

      }) 
     }); 

CSS: .submenu {
ширина: 165px; фон: # F30; позиция: абсолютная; дисплей: нет; }

, когда я упоминаю высоту в CSS он отлично работает, но без высоты ее не работает ..и жаль не организации кода .Это трудно для меня, чтобы сделать это по телефону ..

спасибо advanced

+0

Вы можете добавить все css js и html к скрипке, пожалуйста, –

+0

У вас нет инструкции if в обратном вызове. Это может привести к ошибке. Вероятно, вы должны включить 'if (data) {' before '$ ('. Submenu'). Html (data);' – Voreny

ответ

0

Я считаю, что ваше «else» используется неправильно.

Удалите часть «else» и сделайте что-нибудь для этого эффекта;

 //$('.submenu').slideUp(); 

     $.ajax({ 

      type: "POST", 

      url: "test.php", 

      data: 'keyword=' + $(this).val(), 

      success: function(data) { 
       $('.submenu').slideDown(); 
       $('.submenu').html(data); 

      } 

     }) 

Я закомментирована в верхней строке, как вы можете использовать его, чтобы скрыть subnav в то время как результаты были найдены (вы также можете иметь его slideUp(), а если общие, если функция является ложной , поэтому добавление else в основную функцию if).

+0

Ошибка jsfiddle из-за отсутствия включенной библиотеки JQuery, и файл test5.php не будет существовать в JS скрипка, поэтому ajax никогда не будет успешным. Вы пробовали предложения, которые я посоветовал выше? –

+0

Да, я пробовал ваше предложение, но результаты были такими же. И jsfiddle извините, не делайте это по телефону. Так просто, чтобы вы знали, что его работа абсолютно прекрасна, когда у меня есть высота набора subnav, но без высоты его не работает. ваше предложение тоже –

+0

Хорошо, справедливо. Разве вы не можете установить высоту? Поскольку вы не хотите, чтобы subnav был настолько длинным, что он покидает страницу. Возможно, попробуйте установить высоту: auto; но также применяя значение максимальной высоты? –