简体   繁体   English

记住下拉菜单中最后选择的选项

[英]Remember last selected option from dropdown

I want that our website should remember the last selected option from drop down when he visit again. 我希望我们的网站在他再次访问时应该记住下拉菜单中最后选择的选项。 I'm trying it with jQuery cookies but it's not working. 我正在尝试使用jQuery cookie,但无法正常工作。

Here is my select dropdown code 这是我的选择下拉代码

<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 i'm using it as filter with my search bar i read the value on keyup function my jquery i tried is 因为我将其用作搜索栏的过滤器,所以我读取了我尝试的jquery的keyup函数的值

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

As you can see I tried to use cookie to remember the selection but its not working as it takes the first option again when the page is refreshed. 如您所见,我尝试使用cookie来记住选择,但是由于刷新页面时它将再次采用第一个选项,因此它不起作用。

You can use Jquery.Cookie for this case. 您可以在这种情况下使用Jquery.Cookie

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

Then save dropdown value in cookie like : 然后将下拉列表值保存在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: '/'})
  });
});

Please refer this answer you might get some help.. 请参考此答案,您可能会得到一些帮助。

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

I assume you are using js-cookie or similar? 我假设您使用的是js-cookie或类似的?

This is not tested, but if the cookie is set then you could do the following: 这未经测试,但是如果设置了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>

Notice where php checks $_COOKIE['dropdown'] and outputs selected if it equals the option value on this line: 注意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>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM