JavaScript dans les liens

Code JavaScript dans l'attribut href

Une URL peut désigner du code JavaScript. Le principe est simple, mettez le préfixe javascript: suivi de votre code JavaScript. Exemple avec le fameux lien <a href...> :

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
	</head>
	<body>
		<a href="javascript:alert('coucou');">cliquez ici</a>
	</body>
</html>

On peut bien entendu appeler une fonction :

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<script>
		function toto() {
			alert("Coucou");
			alert("Tu vas bien ?");
		}
		</script>
	</head>
	<body>
		<a href="javascript:toto()">cliquez ici</a>
	</body>
</html>

Code JavaScript dans l'attribut action du formulaire

Le lien JavaScript peut être utilisé comme action d'un formulaire, puisque l'attribut action de la balise <form> sert à appeler un lien suite à la soumission du formulaire.

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<script>
		function message() {
			alert("Coucou");
			alert("Tu vas bien ?");
		}
		</script>
	</head>
	<body>
		<form name="saisie" action="javascript:message();">
			<input type="submit">
		</form>
	</body>
</html>

On peut en profiter pour améliorer un peu les choses en récupérant les données du formulaire :

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<script>
		function reponse() {
		let prenom = document.getElementById("PrenomSaisi").value;
			alert("Bonjour " + prenom);
		}
		</script>
	</head>
	<body>
		<form name="saisie" action="javascript:reponse();">
			<label>Entrez votre prénom</label>
			<input type="text" id="PrenomSaisi">
			<input type="submit">
		</form>
	</body>
</html>

La propriété value représente le contenu du champ de texte nommé PrenomSaisi identifié par la méthode getElementById().

Variante sans préfixe javascript: avec l'événement onsubmit()

Le script précédent peut avoir cette variante sans URL grâce à l'événement JavaScript onsubmit(). Il n'est alors pas nécessaire d'utiliser le préfixe javascript: car un événement JavaScript ne sert qu'à appeler du code JavaScript, contrairement à l'attribut action ou href qui peuvent relier n'importe quel code au format HTML, PHP, CGI, etc.

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<script>
		function reponse() {
			let prenom = document.getElementById("nomSaisi").value;
			alert("Bonjour " + prenom);
		}
		</script>
	</head>
	<body>
		<form name="saisie" onsubmit="reponse()">
			<label>Entrez votre prénom</label>
			<input type="text" id="nomSaisi">
			<input type="submit">
		</form>
	</body>
</html>

Pourquoi ne pas utiliser l'événement onclick sur le bouton, plutôt que l'événement submit sur le formulaire ? Parce que l'événement onclick ne détecte que le clic sur le bouton, alors que submit détecte non seulement le clic, mais aussi l'appui sur la touche Entrée suite à la saisie du prénom.

Encore plus simple, l'événement onsubmit permet de se passer du bouton submit. Il suffira d'appuyer sur la touche Entrée suite à la saisie du prénom pour exécuter la réponse JavaScript.

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<script>
		function reponse() {
			let prenom = document.getElementById("nomSaisi").value;
			alert("Bonjour " + prenom);
		}
		</script>
	</head>
	<body>
		<form name="saisie" onsubmit="reponse()">
			<label>Entrez votre prénom</label>
			<input type="text" id="nomSaisi">
		</form>
	</body>
</html>

Voici donc quelques variantes de code, qui je l'espère, vous aideront à mieux comprendre les interactions entre des liens, des formulaires et le JavaScript.

Logo lesdocs
Résumé de la politique de confidentialité

Ce site collecte des données statistiques via Google Analytics et les commentaires éventuels déposés dans les articles. Plus d'informations sur notre page Politique de confidentialité.