2017-01-02 3 views
0

Я хочу, чтобы наш сайт помнил последний выбранный вариант из раскрывающегося списка, когда он снова посещает. Я пытаюсь использовать файлы cookie jQuery, но он не работает.Запомните последнюю выбранную опцию из раскрывающегося списка

Вот мой выбор выпадающего код

<form action="results.php" method="POST" enctype="multipart/form-data" id="form"> 
       <input id="search" type="text" name="search" placeholder="Search.." autocomplete="off"> 
       <select name="city" id="city"> 
        <?php 
         $sql="SELECT * FROM tcity"; 
         $connect= mysqli_query($conn, $sql) or die ("Failed To Connect."); 
         while($rows= mysqli_fetch_array($connect, MYSQLI_ASSOC)){ ?> 
          <option value= "<?php echo $rows['c_id']?>" id="optin_val"><?php echo $rows['city_nm'];?></option> 
         <?php } 
        ?> 
       </select> 
      </form> 

Beacuse я использую его в качестве фильтра с моей строкой поиска я прочитал значение на KeyUp функционировать мой JQuery я пытался именно

$(document).ready(function(){ 
    $('#search').keyup(function(){ 
     var value = $(this).val(); 
     var val = $('#city').val(); 
     Cookies.set('dropdown',val); 
     if (value != ""){ 
      $('#my-search').show(); 
      var dropCookie = Cookies.get('dropdown'); 
      $.post('functions/search_bar.php', {value: value, val: dropCookie}, function(data){ 
       $('#my-search').html(data); 
      }); 
     }else{ 
      $('#my-search').hide(); 
     } 
    }); 

Как вам может видеть, что я пытался использовать cookie для запоминания выбора, но не работал, поскольку он снова использует первый параметр, когда страница обновляется.

+0

вы должны печенья истечения времени –

+0

Что делать, если я не хочу, чтобы истечь, что печенье .. и пусть выбор пользователя, чтобы запомниться независимо времени..? – Mps

+0

Бит трудно следовать за вами, разве вы не должны проверять '' '$ _POST ['val']' '' и повторять '' 'selected''' в выводе опции? – CUGreen

ответ

0

Я предполагаю, что вы используете js-cookie или подобное?

Это не тестировался, но если куки установлен, то вы можете сделать следующее:

<form action="results.php" method="POST" enctype="multipart/form-data" id="form"> 
    <input id="search" type="text" name="search" placeholder="Search.." autocomplete="off"> 
    <select name="city" id="city"> 
     <?php 
      $sql="SELECT * FROM tcity"; 
      $connect= mysqli_query($conn, $sql) or die ("Failed To Connect."); 
      while($rows= mysqli_fetch_array($connect, MYSQLI_ASSOC)){ ?> 
       <option value= "<?php echo $rows['c_id']?>" id="optin_val" <?php echo (!empty($_COOKIE['dropdown']) && $_COOKIE['dropdown'] == $rows['c_id'] ? 'selected' : ''); ?>><?php echo $rows['city_nm'];?></option> 
      <?php } 
     ?> 
    </select> 
</form> 

Обратите внимание, где PHP проверяет $_COOKIE['dropdown'] и выходы selected, если она равна стоимости опциона на этой линии:

<option value= "<?php echo $rows['c_id']?>" id="optin_val" <?php echo (!empty($_COOKIE['dropdown']) && $_COOKIE['dropdown'] == $rows['c_id'] ? 'selected' : ''); ?>><?php echo $rows['city_nm'];?></option> 
+0

Спасибо. ..Это работало – Mps

+0

Но я немного запутался в работе. Не могли бы вы объяснить в одной или двух строках? – Mps

+0

Я отредактировал ответ. Все, что я сделал, это добавить это в ваш цикл while '' ' '' ' – CUGreen

0

Пожалуйста, обратитесь этот ответ вы можете получить некоторую помощь ..

$(document).ready(function(){ 
     $('#search').keyup(function(){ 
      var value = $(this).val(); 
      var val = $('#city').val(); 
      var date = new Date(); 
      date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); 
      var expires = "; expires=" + date.toGMTString(); 
      document.cookie = "dropdown=" + val + expires + "; path=/"; 
     // Cookies.set('dropdown',val); 
      if (value != ""){ 
       $('#my-search').show(); 
       var dropCookie = getCookie("dropdown"); 
       $.post('functions/search_bar.php', {value: value, val: dropCookie}, function(data){ 
        $('#my-search').html(data); 
       }); 
      }else{ 
       $('#my-search').hide(); 
      } 
    }); 
function getCookie(cname) { 
     var name = cname + "="; 
     var ca = document.cookie.split(';'); 
     for(var i=0; i<ca.length; i++) { 
      var c = ca[i]; 

      if (c.indexOf(name) == 0) { 
       return (c.substring(name.length, c.length)); 
      } 
     } 
    } 
2

Вы можете использовать Jquery.Cookie для этого случая.

https://github.com/carhartl/jquery-cookie

Затем сохраните выпадающий значение в печенье, как:

jQuery(document).ready(function(){ 
    var selectedVal = jQuery.cookie("selected-val"); 
    if (selectedVal) { 
    jQuery("#city").val(selectedVal); 
    } 
    jQuery("#city").on("change", function(){ 
    var selection = jQuery(this).val(); 
    jQuery.cookie("selected-val", selection, {expires: 365, path: '/'}) 
    }); 
}); 
Смежные вопросы