En ce moment, j'utilise ceci:
<select ONCHANGE="location = this.options[this.selectedIndex].value;">
il me redirige sur l'emplacement à l'intérieur de la valeur d'option. Mais cela ne fonctionne pas comme prévu .. cela signifie que si je clique sur la première option de l’action select, l’action onChange ne fonctionne pas. Je pensais à javascript, mais je pense que vous aurez de meilleures suggestions les gars. Alors, comment puis-je le faire fonctionner si je clique sur chaque option cela me redirigera vers sa valeur?
Étant donné que la première option est déjà sélectionnée, l'événement change n'est jamais déclenché. Ajoutez une valeur vide en premier et vérifiez s'il est vide dans l'attribution d'emplacement.
Voici un exemple:
<select onchange="this.options[this.selectedIndex].value && (window.location = this.options[this.selectedIndex].value);">
<option value="">Select...</option>
<option value="http://google.com">Google</option>
<option value="http://yahoo.com">Yahoo</option>
</select>
Et voici le violon: http://jsfiddle.net/bL5sq/
Je suggérerais fortement de ne plus utiliser JavaScript en ligne, mais plutôt:
function redirect(goto){
var conf = confirm("Are you sure you want to go elswhere?");
if (conf && goto != '') {
window.location = goto;
}
}
var selectEl = document.getElementById('redirectSelect');
selectEl.onchange = function(){
var goto = this.value;
redirect(goto);
};
Démo de JS Fiddle (victime de 404 linkrot) .
Démo de JS Fiddle via Wayback Machine .
Forked JS Fiddle pour les utilisateurs actuels .
Dans la balise du JS Fiddle, la première option n'a pas de valeur assignée. Un clic dessus ne devrait donc pas inciter la fonction à faire quoi que ce soit, et comme c'est la valeur par défaut, il suffit de cliquer sur select
, puis de sélectionner le premier par défaut option
ne déclenchera de toute façon pas l'événement change
.
Mettre à jour:
Dans le dernier exemple (2017-08-09), les URL de redirection devaient être permutées en raison d'erreurs relatives au contenu mixte entre JS Fiddle et les deux domaines, ainsi que pour les deux domaines nécessitant le même contenu pour le contenu encadré. - Albert
faire comme fonction de réutilisation globale en utilisant jquery
HTML
<select class="select_location">
<option value="http://localhost.com/app/page1.html">Page 1</option>
<option value="http://localhost.com/app/page2.html">Page 2</option>
<option value="http://localhost.com/app/page3.html">Page 3</option>
</select>
Javascript en utilisant jquery
$('.select_location').on('change', function(){
window.location = $(this).val();
});
vous pourrez maintenant réutiliser cette fonction en ajoutant la classe .select_location à n’importe quelle classe d’élément Select
{{-- dynamic select/dropdown --}}
<select class="form-control m-bot15" name="district_id"
onchange ="location = this.options[this.selectedIndex].value;"
>
<option value="">--Select--</option>
<option value="?">All</option>
@foreach($location as $district)
<option value="?district_id={{ $district->district_id }}" >
{{ $district->district }}
</option>
@endforeach
</select>
Cela peut être archivé en ajoutant du code sur l'événement onchange du contrôle de sélection.
Par exemple:
<select onchange="this.options[this.selectedIndex].value && (window.location = this.options[this.selectedIndex].value);">
<option value=""></option>
<option value="http://google.com">Google</option>
<option value="http://gmail.com">Gmail</option>
<option value="http://youtube.com">Youtube</option>
</select>
Pour quelqu'un qui ne veut pas utiliser JS en ligne.
<select data-select-name>
<option value="">Select...</option>
<option value="http://google.com">Google</option>
<option value="http://yahoo.com">Yahoo</option>
</select>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded',function() {
document.querySelector('select[data-select-name]').onchange=changeEventHandler;
},false);
function changeEventHandler(event) {
window.location.href = this.options[this.selectedIndex].value;
}
</script>