J'ai le code ci-dessous. Il a 3 valeurs d'option de liste déroulante. Actuellement, lors du changement de la sélection déroulante, une alerte est lancée.
Maintenant, je souhaite réaliser ce qui suit: paramétrer mes valeurs de liste déroulante en tant qu'URL, de sorte que c'est-à-dire lorsque je saisis l'URL suivante dans un navigateur: file: //test.ds.waq.cb.uk/anywhere /UserData/PSStore02/u1718987/Desktop/new.html avec ? MySelect = BMW à la fin, puis le navigateur ouvre la liste déroulante avec la valeur BMW renseignée .
Ou si j'entre file: //test.ds.waq.cb.uk/anywhere/UserData/PSStore02/u1718987/Desktop/new.html? mySelect = Audi , le navigateur ouvre le menu déroulant avec Audi rempli.
<script>
function myFunction() {
var x = document.getElementById("mySelect").value;
alert (document.getElementById.innerHTML = "You selected: " + x);
}
</script>
</body>
</html>
Besoin de modifier le script ci-dessous, pour paramétrer la sélection déroulante en tant qu'URL, s'il vous plaît aviser. p >
<!DOCTYPE html>
<html>
<body>
<p>Select a new car from the list.</p>
<select id="mySelect" onchange="myFunction()">
<option value="Audi">Audi
<option value="BMW">BMW
<option value="Volvo">Volvo
</select>
<p id="demo"></p>
5 Réponses :
Vous pouvez facilement récupérer le paramètre de l'URL à l'aide d'expressions et de certaines conditions pour sélectionner l'option. Modifiez la valeur mySelect dans l'URL pour la vérifier.
JAVASCRIPT: HTML: final<select>
<option class="Audi">Audi</option>
<option class="BMW">BMW</option>
<option class="Volvo">Volvo</option>
</select>
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
vars[key] = value;
});
return vars;
}
$(document).ready(function(){
var data = getUrlVars()["mySelect"];
if(data == "Audi"){
$('select').prop('selectedIndex', 0);
}
else if(data == "BMW"){
$('select').prop('selectedIndex', 1);
}
else if(data == "Volvo"){
$('select').prop('selectedIndex', 2);
}
});
quelle URL dois-je saisir?
Comme ça, ? MySelect = Audi à l'url
Vous pouvez améliorer cela en supprimant les instructions if dans le gestionnaire de document prêt et en boucle et comparez les valeurs. De cette façon, si l'OP ajoute plus d'éléments à la sélection, ils n'ont pas besoin de modifier le code.
@archer Attendez un moment. je ferai
Vous pouvez lire les paramètres d'url une fois la boîte de sélection chargée, voir le code ci-dessous
HTML:
<!DOCTYPE html>
<html>
<body>
<p>Select a new car from the list.</p>
<select id="mySelect" onchange="myFunction()" onload="setMySelect()">
<option value="Audi">Audi
<option value="BMW">BMW
<option value="Volvo">Volvo
</select>
<p id="demo"></p>
<script>
function setMySelect() {
var urlParams = new URLSearchParams(window.location.search);
var mySelect = urlParams.get('mySelect');
if(mySelect)
document.getElementById("mySelect").value = mySelect;
}
function myFunction() {
var x = document.getElementById("mySelect").value;
alert (document.getElementById.innerHTML = "You selected: " + x);
}
</script>
</body>
</html>
cela ne semble pas fonctionner, il n'exécute même pas la fonction
@Bhushan Kawadkar cela ne semble pas fonctionner s'il vous plaît aviser
Fondamentalement, lorsque j'ouvre FireFox et que j'entre le fichier URL: //test.ds.waq.cb.uk/anywhere/UserData/PSStore02/u171898 7 / Desktop / new.html avec? MySelect = BMW BMW n'est pas sélectionné sur le la liste déroulante affiche toujours Audi, également si j'entre dans le fichier: //test.ds.waq.cb.uk/anywhere/UserData/PSStore02/u171898 7 / Desktop / new.html avec? mySelect = Volvo toujours Audi est affiché
Lorsque vous entrez l'url sur le navigateur et appuyez sur le bouton ENTRÉE, l'URL reste la même ou elle est modifiée après le chargement de la page? Si l'URL est modifiée après le chargement de la page, cette solution ne fonctionnera pas, vous devez apporter des modifications côté serveur pour conserver l'URL ou lire le paramètre de demande avec le code backend et le transmettre à la page afin que la page puisse lire les paramètres et définir la case de sélection valeurs en conséquence
utilisez cette réponse pour extraire les requêtes de recherche. Ensuite, définissez simplement la valeur lors du chargement avec la valeur appropriée.
<script>
function setValue(value) {
document.getElementById("mySelect").value = value;
alert (document.getElementById.innerHTML = "You selected: " + x);
}
let urlParams = new URLSearchParams(window.location.search);
setValue(urlParams.get('mySelect');
</script>
MISE À JOUR pour avoir les deux dans le même script.
<script>
function setValue(value) {
document.getElementById("mySelect").value = value;
alert (document.getElementById.innerHTML = "You selected: " + x);
}
</script>
Vous pouvez essayer ce qui suit.
var url = new URL(window.location);
var params = new URLSearchParams(url.search.slice(1));
for (let [key, value] of params.entries()) {
if(params.has(key) && key == "mySelect") {
document.getElementById(key).value = value;
}
}
document.getElementById("mySelect").addEventListener("change", (e) => {
params.set("mySelect",e.target.value);
url.search = params.toString();
let new_url = url.toString();
window.location.assign(new_url);
})
J'avais besoin du window.onload suivant car cette fonction ne se chargeait pas.
<!DOCTYPE html>
<html>
<body>
<p>Select a new car from the list.</p>
<select id="mySelect" onchange="myFunction()" onload="setMySelect()">
<option value="Audi">Audi</option>
<option value="BMW">BMW</option>
<option value="Volvo">Volvo</option>
</select>
<p id="demo"></p>
<script>
<!-- function setMySelect() { -->
window.onload = function() {
var urlParams = new URLSearchParams(window.location.search);
var mySelect = urlParams.get('mySelect');
if(mySelect)
document.getElementById("mySelect").value = mySelect;
}
function myFunction() {
var x = document.getElementById("mySelect").value;
alert (document.getElementById.innerHTML = "You selected: " + x);
}
</script>
</body>
</html>
Réponse: l'extrait de code ne fonctionnera pas, veuillez copier le code, puis modifier le paramètre de l'url pour voir les résultats
Modifié ma réponse. Maintenant ça marche correctement
@Ibnelaiq ne fonctionne toujours pas
ça marche vérifier le paramètre
@Ibnelaiq je saisis le fichier: //test.ds.waq.cb.uk/anywhere/UserData/PSStore02/u171898 7 / Desktop / new.html avec? MySelect = BMW et Audi sont toujours sélectionnés, j'utilise notepad ++
Copiez ma sélection et mes options. Et assurez-vous que jquery est attaché