2011-12-13 46 views
2

任何人都可以帮助我,我无法在互联网上找到一个脚本,在jQuery中做到这一点。我需要记住下拉菜单的最后一个状态,以便在页面加载时已经选择了下拉选项。 cookie过期日期应该是90天,或者让我在脚本中指定。由于我已经在我的页面上使用jQuery,我希望这个cookie脚本使用jquery,jquery cookie插件。先谢谢你。我不是程序员,但我尝试。jquery cookie记住下拉菜单的最后状态

<body onLoad="GETcookie()"> 
<select onChange="SETcookie()"> 
<option value="1">1</option> 
<option value="2">2</option> 
<option value="3">3</option> 
</select> 
+0

* Ahem。*您不需要jQuery来管理cookie。只需找到* Javascript *安装程序即可为您管理它。 '' –

+1

并阅读本文,最后有一些有用的功能:http://www.quirksmode.org/js/cookies.html –

+0

(*虽然我确实希望jQuery库包含'.cookie ()'函数的工作方式就像'$ .data()'一样工作,因为在Javascript的对接中cookie有点痛苦。*'') –

回答

9

有了,我已经包括在内,你可以获取和设置Cookie插件。

您的代码看起来有点像这样:

//checks if the cookie has been set 

if($.cookie('remember_select') != null) { 

    // set the option to selected that corresponds to what the cookie is set to 

    $('.select_class option[value="' + $.cookie('remember_select') + '"]').attr('selected', 'selected'); 

} 

// when a new option is selected this is triggered 

$('.select_class').change(function() { 

    // new cookie is set when the option is changed 

    $.cookie('remember_select', $('.select_class option:selected').val(), { expires: 90, path: '/'}); 

}); 

这里是你select会是什么样子:

<select class="select_class"> 
    <option value="1">Row 1</option> 
    <option value="2">Row 2</option> 
    <option value="3">Row 3</option> 
</select> 

下面是它的jsfiddle演示:http://jsfiddle.net/RastaLulz/3HxCF/3/

这里是jQuery cookie插件,因为你还没有它:http://pastebin.com/CBueT8LP

+0

令人惊叹。一直在寻找这样的事情3天现在 – ClosDesign

+0

这只适用于选择框,但如果有多个选择框只能记住第一个。此代码可以用于多个选择框吗? – JoMojo

1

首先不做身体的onLoad(应小写字母为onload),但在我的例子中,你不需要你的onload和平变化 但:

// This replace onload 
$(function() { 
    // Read your cookie and other things up to you to do... 
    $.cookie('the_cookie'); 

    // on change of your select 
    $('select').on('change', function() { 
    // Set the cookie 
    $.cookie('the_cookie', 'the_value', { expires: 90, path: '/'}); 
    }); 

}); 

PS:我的脚本jQuery 1.7(对于),所以看看你是否是最新的!

编辑:设置90天后过期

+0

你可以在http://jsfiddle.net给我一个例子,因为我尝试过并且没有工作。再说,不是程序员,一定是搞砸了。谢谢。 –

+0

Josh Foskett在http://jsfiddle.net/RastaLulz/3HxCF/3/上做了一个,你可以看看它的工作原理。 – user1040899