Javascript 更改事件不适用于选择列表
我想在1天内检测国家/地区选择并将所选选项存储在cookie上,当您在1天之前重新加载网站时,网站首选项应通过以下方式加载:Javascript 更改事件不适用于选择列表,javascript,jquery,html,Javascript,Jquery,Html,我想在1天内检测国家/地区选择并将所选选项存储在cookie上,当您在1天之前重新加载网站时,网站首选项应通过以下方式加载: $('#country-options')[0].value = getCookie("selectedLanguage"); 我如何做到这一点?请告知 下面是我的.js代码 function setCookie(c_name, value, exdays) { var exdate = new Date(); exdate.setDate(exdate
$('#country-options')[0].value = getCookie("selectedLanguage");
我如何做到这一点?请告知
下面是我的.js代码
function setCookie(c_name, value, exdays) {
var exdate = new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value = escape(value)
+ ((exdays == null) ? "" : "; expires=" + exdate.toUTCString());
document.cookie = c_name + "=" + c_value;
}
function getCookie(c_name) {
var i, x, y, ARRcookies = document.cookie.split(";");
for (i = 0; i < ARRcookies.length; i++) {
x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
x = x.replace(/^\s+|\s+$/g, "");
if (x == c_name) {
return unescape(y);
}
}
}
function languageSelected() {
//= $('#country-options')[0].value;
var languageSelected = $('#country-options').val();
alert(" tt " + languageSelected);
var selected = $('#country-options').options[$('#country-options').selectedIndex];
selected.setAttribute("selected", "selected");
var oldselected = $('#country-options').options[0];
oldselected.removeAttribute("selected");
if (languageSelected !== "fr") {
setCookie("selectedLanguage", languageSelected, 1);
alert("Welcome again " + languageSelected);
} else {
alert("W " + languageSelected);
}
//$('#countryform').submit();
}
$(document).ready(function() {
// --- language dropdown --- //
// turn select into dl
createDropDown();
var $dropTrigger = $(".dropdown dt a");
var $languageList = $(".dropdown dd ul");
// open and close list when button is clicked
$dropTrigger.toggle(function() {
$languageList.slideDown(200);
$dropTrigger.addClass("active");
}, function() {
$languageList.slideUp(200);
$(this).removeAttr("class");
});
// close list when anywhere else on the screen is clicked
$(document).bind('click', function(e) {
var $clicked = $(e.target);
if (!$clicked.parents().hasClass("dropdown"))
$languageList.slideUp(200);
$dropTrigger.removeAttr("class");
});
// when a language is clicked, make the selection and then hide the list
$(".dropdown dd ul li a").click(function() {
var clickedValue = $(this).parent().attr("class");
var clickedTitle = $(this).find("em").html();
$("#target dt").removeClass().addClass(clickedValue);
$("#target dt em").html(clickedTitle);
$languageList.hide();
$dropTrigger.removeAttr("class");
});
$('#country-options')[0].value = getCookie("selectedLanguage");
$('#country-options').bind('change', function() { // bind change event to select
var url = $(this).val(); // get selected value
alert("WFFFFFF " + url);
if (url != '') { // require a URL
window.location = url; // redirect
}
return false;
});
});
// actual function to transform select to definition list
function createDropDown() {
var $form = $("div#country-select form");
$form.hide();
var source = $("#country-options");
source.removeAttr("autocomplete");
var selected = source.find("option:selected");
var options = $("option", source);
$("#country-select").append('<dl id="target" class="dropdown"></dl>')
$("#target").append(
'<dt class="' + selected.val()
+ '"><a href="#"><span class="flag"></span><em>'
+ selected.text() + '</em></a></dt>')
$("#target").append('<dd><ul></ul></dd>')
options.each(function() {
$("#target dd ul").append(
'<li class="' + $(this).val() + '"><a href="'
+ $(this).attr("title")
+ '"><span class="flag"></span><em>'
+ $(this).text() + '</em></a></li>');
});
}
<form name="countryform" action="index.jsp">
<select id="country-options" name="country-options">
<option selected="selected" value="">Pick a Website</option>
<option title="index.jsp" value="fr">France</option>
<option title="index.jsp" value="uk">United Kingdom</option>
<option title="index.jsp" value="es">Espana</option>
<option title="index.jsp" value="de">Germany</option>
</select>
</form>
函数setCookie(c_名称、值、exdays){
var exdate=新日期();
exdate.setDate(exdate.getDate()+exdays);
var c_值=转义(值)
+((exdays==null)?“”:““expires=“+exdate.ToutString());
document.cookie=c_name+“=”+c_值;
}
函数getCookie(c_名称){
变量i,x,y,ARRcookies=document.cookie.split(“;”);
对于(i=0;i<0.length;i++){
x=ARRcookies[i].substr(0,ARRcookies[i].indexOf(“=”);
y=ARRcookies[i].substr(ARRcookies[i].indexOf(“=”)+1);
x=x.replace(/^\s+|\s+$/g,”);
如果(x==c_名称){
返回unescape(y);
}
}
}
函数语言selected(){
//=$(“#国家/地区选项”)[0]。值;
var languageSelected=$(“#国家/地区选项”).val();
警报(“tt”+所选语言);
所选变量=$(“#国家选项”)。选项[$(“#国家选项”)。所选索引];
selected.setAttribute(“selected”、“selected”);
var oldselected=$(“#国家/地区选项”)。选项[0];
oldselected.removeAttribute(“选定”);
如果(所选语言!=“fr”){
setCookie(“selectedLanguage”,languageSelected,1);
警报(“再次欢迎”+选择语言);
}否则{
警报(“W”+所选语言);
}
//$(“#countryform”).submit();
}
$(文档).ready(函数(){
//---语言下拉菜单--//
//将select转换为dl
createDropDown();
变量$dropTrigger=$(“.dropdown dt a”);
var$languageList=$(“.dropdown dd ul”);
//单击按钮时打开和关闭列表
$dropTrigger.toggle(函数(){
$languageList.slideDown(200);
$dropTrigger.addClass(“活动”);
},函数(){
$languageList.slideUp(200);
$(此).removeAttr(“类”);
});
//单击屏幕上的任何其他位置时关闭列表
$(文档).bind('click',函数(e){
var$clicked=$(e.target);
如果(!$clicked.parents().hasClass(“下拉菜单”))
$languageList.slideUp(200);
$dropTrigger.removeAttr(“类”);
});
//单击语言时,进行选择,然后隐藏列表
$(“.dropdown dd ul li a”)。单击(函数(){
var clickedValue=$(this.parent().attr(“类”);
var clickedTitle=$(this.find(“em”).html();
$(“#目标dt”).removeClass().addClass(clickedValue);
$(“#target dt em”).html(单击标题);
$languageList.hide();
$dropTrigger.removeAttr(“类”);
});
$(“#国家/地区选项”)[0]。value=getCookie(“selectedLanguage”);
$(“#国家/地区选项”).bind('change',function(){//bind change event to select
var url=$(this).val();//获取所选值
警报(“WFFFFFF”+url);
如果(url!=''){//需要一个url
window.location=url;//重定向
}
返回false;
});
});
//将选择转换为定义列表的实际函数
函数createDropDown(){
var$form=$(“div#country select form”);
$form.hide();
var来源=$(“#国家选项”);
source.removeAttr(“自动完成”);
var selected=source.find(“选项:selected”);
var选项=$(“选项”,来源);
$(“#国家/地区选择”)。附加(“”)
$(“#目标”)。追加(
'')
$(“#目标”)。追加(“
”)
选项。每个(函数(){
$(“#目标dd ul”)。追加(
“);
});
}
选择一个网站
法国
大不列颠联合王国
西班牙人
德国
但在代码之前,我将另一个以(function($,undefined){,revslider.jquery.themepunch.revolution.js开头的js加载到我的webpage.jsp文件中
<script type="text/javascript"
src="js/revslider.jquery.themepunch.revolution.js"></script>
<script> my code </script>
我的代码
取决于您使用的jQuery版本,但如果您使用的是最新的jQuery版本,.bind()
将被折旧
所以你可以用它
$('#country-options').on('change', function() {
// Code here.
});
jQuery API
.on()
link->不要使用.bind()
,使用.on()
你所做的应该可以工作,所以要么你从来没有调用languageSelected
,要么语言没有正确存储,要么问题出在其他地方:)我添加到change函数中,我尝试了,但不起作用。bind()
未被弃用