Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    menu lingua non visualizza lingua selezionata

    Ciao a tutti,

    Ho recuperato in rete uno script per selezionare la lingua che utilizzo con una pagina php. Funziona ma ha due piccoli bug con non sono in grado di correggere essendo quasi novizio in jquery:
    1. la lingua e la bandiera selezionata rimangono sempre l'inglese anche se in realtà il cambio di lingua funziona per la pagina
    2. vorrei poter visualizzare english, italiano, ecc.. .anziché UK, Italia, ecc...
    Grazie anticipatamente a chi potrà aiutarmi o indirizzarmi verso un'altro script simile.
    Ecco il mio codice html
    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 	<script src="scripts/jquery-1.4.2.min.js" type="text/javascript"></script>     <script src="scripts/languageswitcher.js"></script>  <title>Untitled Document</title> <style type="text/css"> #country-select { 	position: absolute; 	top: 15px; 	right: 25px; 	width: 130px; 	}   /* rought form styles for when JS is disabled */   #country-select form { 	width: 130px; 	padding: 0; 	}   #country-select select, #country-select input { 	display: inline; 	padding: 0; 	margin: 0; 	} /* JS-created definition list */   .dropdown dd { position: relative; }   .dropdown a { 	text-decoration: none; 	outline: 0; 	font: 12px Arial, Helvetica, sans-serif; 	display: block; 	width: 130px; 	overflow: hidden; 	}   .dropdown dt a { 	background: #003466; 	border: 1px solid #000; 	padding: 3px 10px 4px 10px; 	-webkit-border-radius: 5px; 	-moz-border-radius: 5px; 	border-radius: 5px; 	color: #fff; 	}   	.dropdown dt a.active { 		background: #003466; 		-webkit-border-bottom-left-radius: 0; 		-webkit-border-bottom-right-radius: 0; 		-moz-border-radius-bottomleft: 0; 		-moz-border-radius-bottomright: 0; 		border-bottom-left-radius: 0; 		border-bottom-right-radius: 0; 		border-bottom: 1px dotted #676768; 		-moz-box-shadow: 0 3px 7px rgba(0,0,0,.5); 		-webkit-box-shadow: 0 3px 7px rgba(0,0,0,.5); 		box-shadow: 0 3px 7px rgba(0,0,0,.5); 		color: #fff; 		}   .dropdown dd ul { 	border: 1px solid #676768; 	color: #fff; 	display: none; 	position: absolute; 	z-index: 999; 	top: 0; 	left: 0; 	padding: 2px 0 5px 0; 	list-style: none; 	border-top: none; 	margin: 0; 	-webkit-border-bottom-right-radius: 5px; 	-webkit-border-bottom-left-radius: 5px; 	-moz-border-radius-bottomright: 5px; 	-moz-border-radius-bottomleft: 5px; 	border-bottom-right-radius: 5px; 	border-bottom-left-radius: 5px; 	-moz-box-shadow: 0 3px 7px rgba(0,0,0,.5); 	-webkit-box-shadow: 0 3px 7px rgba(0,0,0,.5); 	box-shadow: 0 3px 7px rgba(0,0,0,.5); 	background-color: #003466; 	}   	.dropdown dd ul li a { 		padding: 2px 10px; 		}   	.dropdown dd ul li a span, 	.dropdown dt a span { 	float: left; 	width: 16px; 	height: 11px; 	margin: 2px 6px 0 0; 	background-image: url(../images/flags.png); 	background-repeat: no-repeat; 	cursor: pointer; 		}   		.uk a span { background-position: 0 0 } 		.fr a span { background-position: -16px 0 } 		.it a span { background-position: -32px 0 } 		.es a span { background-position: -48px 0 } 		.de a span { background-position: -64px 0 }   	.dropdown dd ul li a em, 	.dropdown dt a em { 		font-style: normal; 		float: left; 		width: 100px; 		cursor: pointer; 		}   	.dropdown dd ul li a em { 		color: #fff; 		}   		.dropdown dd ul li a:hover { background-color: rgba(255,255,255,.1); } 		.dropdown dd ul li a:hover em { color: #fff; } </style></head>   <body>   <div id="help"><div id="country-select">   <form action="">     <select id="country-options" name="country-options">       <option selected="selected" title="index.php?lang=uk" value="uk">English</option>       <option title="index.php?lang=fr" value="fr">français</option>       <option title="index.php?lang=it" value="it">italiano</option>     </select>     <input value="Select" type="submit" />   </form> </div> </div> </body> </html>
    e il mio script
    codice:
    $(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"); 	}); });   	// 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() + '"><span class="flag"></span>' + selected.text() + '</dt>') 		$("#target").append('<dd><ul>[/list]</dd>') 		options.each(function(){ 			$("#target dd ul").append('<li class="' + $(this).val() + '"><span class="flag"></span>' + $(this).text() + ''); 			}); 	}

  2. #2
    Comincia a postare il codice HTML e Javascript formattato come si deve e non su una riga sola, a quel punto forse qualcuno si prenderà la briga di leggerlo. Così è davvero illegibile...
    Visita il mio blog e canale YouTube dedicati a programmazione web e sicurezza informatica.

  3. #3
    Hai ragione, scusa non avevo visto che era rimasto su una riga sola.
    Ecco il mio html
    codice:
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    	<script src="scripts/jquery-1.4.2.min.js" type="text/javascript"></script>
        <script src="scripts/languageswitcher.js"></script> 
    <title>Untitled Document</title>
    <style type="text/css">
    #country-select {
    	position: absolute;
    	top: 15px;
    	right: 25px;
    	width: 130px;
    	}
    
    /* rought form styles for when JS is disabled */
    
    #country-select form {
    	width: 130px;
    	padding: 0;
    	}
    
    #country-select select,
    #country-select input {
    	display: inline;
    	padding: 0;
    	margin: 0;
    	}
    /* JS-created definition list */
    
    .dropdown dd { position: relative; }
    
    .dropdown a {
    	text-decoration: none;
    	outline: 0;
    	font: 12px Arial, Helvetica, sans-serif;
    	display: block;
    	width: 130px;
    	overflow: hidden;
    	}
    
    .dropdown dt a {
    	background: #003466;
    	border: 1px solid #000;
    	padding: 3px 10px 4px 10px;
    	-webkit-border-radius: 5px;
    	-moz-border-radius: 5px;
    	border-radius: 5px;
    	color: #fff;
    	}
    
    	.dropdown dt a.active {
    		background: #003466;
    		-webkit-border-bottom-left-radius: 0;
    		-webkit-border-bottom-right-radius: 0;
    		-moz-border-radius-bottomleft: 0;
    		-moz-border-radius-bottomright: 0;
    		border-bottom-left-radius: 0;
    		border-bottom-right-radius: 0;
    		border-bottom: 1px dotted #676768;
    		-moz-box-shadow: 0 3px 7px rgba(0,0,0,.5);
    		-webkit-box-shadow: 0 3px 7px rgba(0,0,0,.5);
    		box-shadow: 0 3px 7px rgba(0,0,0,.5);
    		color: #fff;
    		}
    
    .dropdown dd ul {
    	border: 1px solid #676768;
    	color: #fff;
    	display: none;
    	position: absolute;
    	z-index: 999;
    	top: 0;
    	left: 0;
    	padding: 2px 0 5px 0;
    	list-style: none;
    	border-top: none;
    	margin: 0;
    	-webkit-border-bottom-right-radius: 5px;
    	-webkit-border-bottom-left-radius: 5px;
    	-moz-border-radius-bottomright: 5px;
    	-moz-border-radius-bottomleft: 5px;
    	border-bottom-right-radius: 5px;
    	border-bottom-left-radius: 5px;
    	-moz-box-shadow: 0 3px 7px rgba(0,0,0,.5);
    	-webkit-box-shadow: 0 3px 7px rgba(0,0,0,.5);
    	box-shadow: 0 3px 7px rgba(0,0,0,.5);
    	background-color: #003466;
    	}
    
    	.dropdown dd ul li a {
    		padding: 2px 10px;
    		}
    
    	.dropdown dd ul li a span,
    	.dropdown dt a span {
    	float: left;
    	width: 16px;
    	height: 11px;
    	margin: 2px 6px 0 0;
    	background-image: url(../images/flags.png);
    	background-repeat: no-repeat;
    	cursor: pointer;
    		}
    
    		.uk a span { background-position: 0 0 }
    		.fr a span { background-position: -16px 0 }
    		.it a span { background-position: -32px 0 }
    		.es a span { background-position: -48px 0 }
    		.de a span { background-position: -64px 0 }
    
    	.dropdown dd ul li a em,
    	.dropdown dt a em {
    		font-style: normal;
    		float: left;
    		width: 100px;
    		cursor: pointer;
    		}
    
    	.dropdown dd ul li a em {
    		color: #fff;
    		}
    
    		.dropdown dd ul li a:hover { background-color: rgba(255,255,255,.1); }
    		.dropdown dd ul li a:hover em { color: #fff; }
    </style></head>
    
    <body>
    
    <div id="help"><div id="country-select">
      <form action="">
        <select id="country-options" name="country-options">
        <option value="" selected="selected" title="English"></option>
            <option value="uk" title="index.php?lang=uk">English</option>
          <option title="index.php?lang=fr" value="fr">français</option>
          <option title="index.php?lang=it" value="it">italiano</option>
        </select>
        <input value="Select" type="submit" />
      </form>
    </div>
    </div>      
    </body>
    </html>
    e lo script che rimane sempre su United Kingdom
    codice:
     
    $(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");
    	});
    });
    
    	// 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() + '"><span class="flag"></span>' + selected.text() + '</dt>')
    		$("#target").append('<dd><ul>[/list]</dd>')
    		options.each(function(){
    			$("#target dd ul").append('<li class="' + $(this).val() + '"><span class="flag"></span>' + $(this).text() + '');
    			});
    	}

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Metti anche un link alla pagina pubblica cosi da poter testare il tutto.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Eccolo qui link

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Da un breve studio, non mi sembra che lo script recuperi request (lang=it) io recupererei il dato lato server (php/asp) e stamperei testo e immagine, apportare la stessa modifica allo script ritengo sia più complesso dato che viene ricaricata la pagina
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    come ha già detto andrea il problema è che la pagina viene ricaricata mentre non dovrebbe essere cosi, per risolvere dovrebbe bastare questo:

    codice:
    $(".dropdown dd ul li a").click(function(event) {
    		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");
                    event.preventDefault();
    	});
    edit: come non detto se la pagina non si ricarica i testi non cambiano, però potresti chiamare la funzione che lo fa aggiungendo la chiamata ajax a quel metodo ma come detto da andrea conviene gestire il tutto lato server

  8. #8
    Grazie.
    Non sono per niente esperto. Mi sa che cercherò un'altro script funzionante.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.