Fixer le choix d'une balise <select> lors d'un envoi de formulaire

Contenu du snippet

Ce code permet, après soumission d'un formulaire ASP contenant une ou plusieurs combobox (balise <select>), de retrouver dans la liste le ou les choix sélectionnés.
En effet, si aucun élément de la liste ne comporte l'option "selected", la combobox se positionne automatiquement sur le premier élément de la liste après l'envoi du formulaire, ce qui peut être génant, par exemple pour retrouver à quoi correspondent des données issues d'une table.

Source / Exemple :


<%@ Language=VBScript %>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>
<%
dim i

if Request.Form("submit") = "Soumettre" then
%>
<form method="post" name="formtest" action="test.asp">
<table border=0 cellpadding=0 cellspacing=0>
<tr>
	<td>
		Vous avez sélectionné : <%=Request.Form("combo1")%> et <%=Request.Form("combo2")%>
	</td>
</tr>
<tr>
	<td>
		<select name="combo1">
		<%
		for i = 0 to 4
		%>
		<option value="<%Response.Write(i)%>" <%if cint(Request.Form("combo1")) = i then Response.Write("selected")%>><%Response.Write(i)%></option>
		<%
		next
		%>
		</select>
	</td>
</tr>
<tr>
	<td>
		<select name="combo2">
		<%
		for i = 5 to 9
		%>
		<option value="<%Response.Write(i)%>" <%if cint(Request.Form("combo2")) = i then Response.Write("selected")%>><%Response.Write(i)%></option>
		<%
		next
		%>
		</select>
	</td>
</tr>
<tr>
	<td>
		<input type="submit" name="submit" value="Soumettre">
	</td>
</tr>
</table>
</form>
<%
else
%>
<form method="post" name="formtest" action="test.asp">
<table border=0 cellpadding=0 cellspacing=0>
<tr>
	<td>
		<select name="combo1">
		<%
		for i = 0 to 4
		%>
		<option value="<%Response.Write(i)%>"><%Response.Write(i)%></option>
		<%
		next
		%>
		</select>
	</td>
</tr>
<tr>
	<td>
		<select name="combo2">
		<%
		for i = 5 to 9
		%>
		<option value="<%Response.Write(i)%>"><%Response.Write(i)%></option>
		<%
		next
		%>
		</select>
	</td>
</tr>
<tr>
	<td>
		<input type="submit" name="submit" value="Soumettre">
	</td>
</tr>
</table>
</form>
<%
end if
%>
</BODY>
</HTML>

Conclusion :


La page "test.asp" comporte deux combos ("combo1" et "combo2") qui gardent les choix effectués, même après avoir cliqué sur le bouton "Soumettre".

Pour mieux se rendre compte de la différence, il faut supprimer les lignes :
- <%if cint(Request.Form("combo1")) = i then Response.Write("selected")%>
et
- <%if cint(Request.Form("combo2")) = i then Response.Write("selected")%>
Dans ce cas là, après soumission, les combos reprennent automatiquement leurs premières valeurs (à savoir 0 pour combo1 et 5 pour combo2).

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.