controle de saisie liste déroulante + checkbox?
Bonjour,
j'ai actuellement deux jsp , l'une dans laquelle il y a deux listes déroulantes liiées via ajax , et l'autre avec 4 checkbox.
Ce que je souhaiterais mettre en place c'est un controle de saisie sur ces listes et checkbox notamment lorque j'utilisateur clique que un bouton sans avoir selectionné d'item.
Pour que ce soit un peu plus parlant voici mon code:
fonctions JS de ma jsp avec les listes:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
function getXhr(){
var xhr = null;
if(window.XMLHttpRequest){ // Firefox et autres
xhr = new XMLHttpRequest();
//alert('new XMLHttpRequest');
}
else if(window.ActiveXObject){ // Internet Explorer
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
//alert('new activeXObject');
} catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
return xhr;
}
function go() {
//alert('valeur de la liste :'+
//document.getElementById('structures').options[document.getElementById('structures').selectedIndex].text+' id='+
//document.getElementById('structures').options[document.getElementById('structures').selectedIndex].value);
var xhr = getXhr();
// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function(){
//alert('debug0 ='+xhr.readyState);
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(xhr.readyState == 4 /* && xhr.status == 200*/){
//alert('debug1');
leselect = xhr.responseText;
//alert('leselect:'+leselect);
// On se sert de innerHTML pour rajouter les options a la liste
document.getElementById('utilisateurs').innerHTML = leselect;
}
}
// Ici on va voir comment faire du post
xhr.open("POST","/intranet/integration/demande/ListeUtilisateurs.jsp",true);
//xhr.open("POST","/intranet/integration/demande/formulaireDemande.jsp",true);
// ne pas oublier ça pour le post
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
// ne pas oublier de poster les arguments
// ici, l'id de la structure
sel = document.getElementById('structures');
idstruc = sel.options[sel.selectedIndex].value;
//alert('idStruc = '+idstruc);
xhr.send("idStructure="+idstruc);
}
function loginUtilisateur(){
//var codeUtil = document.getElementById('selectUtil').options[document.getElementById('selectUtil').selectedIndex].value;
<%-- <% String idUtilisateur= codeUtil;
Iterator monIt = GetList.getUtilisateurList(idUtilisateur).iterator();
Utilisateur util= (Utilisateur)monIt.next();
%> --%>
alert('Vous etes maintenant loggé '+document.getElementById('selectUtil').options[document.getElementById('selectUtil').selectedIndex].text);
} |
code lié aux listes déroulantes liées:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
<!-- partie d'identification -->
<table border cellspacing="10px">
<tr >
<td >
<select name="structures" id="structures" onChange="go()">
<option value="vide">Liste structures</option>
<% Iterator it1 = GetList.getStructureList().iterator();
String s=null;
while(it1.hasNext()){
Structure struct =(Structure)it1.next();
s=struct.getNom();
%>
<option value="<%=struct.getId()%>"> <%=s%></option>
<%}%> </select>
</td>
<td>
<div id='utilisateurs' style='display:inline'>
<select name="utilisateurs" id="selectUtil" >
<option value="vide">Choisir une structure</option>
</select>
</div>
</td>
</tr>
</table>
<br><br>
<div class="UI_EDITOR_TEXTFIELD">
<hr size="1" noshade="noshade" />
<input type="submit" class='formButton mainButton' value="Se connecter" onClick="loginUtilisateur()"/>
</div> |
fonction JS de ma jsp checkbox:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| function verifSelection(){
cpt=0;
if(document.getElementById('chckLog').checked)
{ cpt++; }
if(document.getElementById('chckMat').checked)
{ cpt++; }
if(document.getElementById('chckMut').checked)
{ cpt++; }
if(document.getElementById('chckDep').checked)
{ cpt++; }
alert('cpt= '+cpt);
if(cpt=0){
alert('/!\ Vous devez sélectionner au moins 1 catégorie !');
} |
code de ma jsp checkbox:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| <body >
<h1 class="boTitle">
Formulaire de demande d'installation de logiciel
</h1>
<form action="" method="POST">
<h4 align="right"><%=utilisateurLog.getNom()%> <%=utilisateurLog.getPrenom()%></h4>
<h4 align="right"> <input type="submit" name="deco" value="Deconnexion" /> </h4>
<!-- Onglet formulaire -->
<div class="tab-pane" id="mainTab">
<div class="tab-page">
<table cellspacing='3' cellpadding='3' border='0' class='FicheIndividuelle' width="100%" height="400px>
<tr>
<td width="33%">
</td>
<td>
<br><hr size="1" noshade="noshade" /><br>
<table border align="center" >
<tr>
<td> Liste des actions possibles : </td>
</tr>
<tr>
<td><input type="checkbox" id="chckLog" name="chckLog" onclick="//document.getElementById('validerChoix').style.visibility='visible'"> installation logicielle </input></td>
</tr>
<tr>
<td><input type="checkbox" id="chckMat" name="chckMat" onclick="//document.getElementById('validerChoix').style.visibility='visible'"> installation matérielle </input></td>
</tr>
<tr>
<td><input type="checkbox" id="chckMut" name="chckMut" onclick="//document.getElementById('validerChoix').style.visibility='visible'"> Mutation </input></td>
</tr>
<tr>
<td><input type="checkbox" id="chckDep" name="chckDep" onclick="//document.getElementById('validerChoix').style.visibility='visible'"> Départ </input></td>
</tr>
</table>
<div class="UI_EDITOR_TEXTFIELD" align=center>
<hr size="1" noshade="noshade" />
<input type="submit" class='formButton mainButton' id="validerChoix" value="Valider mes choix" onclick="verifSelection()"/>
</div>
</td>
<td width="33%">
</td>
</tr>
</table>
</div>
</div>
</form>
</body> |
la servlet:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.debug("FormulaireDemandeServlet.doPost : " + request.getParameter("action"));
HttpSession session;
session = request.getSession();
if(request.getParameter("utilisateurs")!=null){
BigDecimal idUtilisateur = new BigDecimal(request.getParameter("utilisateurs"));
//System.out.println(request.getParameter("utilisateurs"));
Utilisateur util = UtilisateurDAO.getInstance().findById(idUtilisateur);
session.setAttribute("utilisateurLog", util);
getServletContext().getRequestDispatcher(JSP_PATH_DEMANDE+"formulaireDemandeSelection.jsp").forward(request, response);
//response.sendRedirect(JSP_PATH_DEMANDE+"formulaireDemandeSelection.jsp");
}
if(request.getParameter("deco")!=null){
session.removeAttribute("utilisateurLog");
getServletContext().getRequestDispatcher(JSP_PATH_DEMANDE+"formulaireDemande.jsp").forward(request, response);
}
if(request.getParameter("validerChoix")!=null){
if(request.getParameter("chckLog")!=null){
session.setAttribute("demandeLogicielle", true);
}
if(request.getParameter("chckMat")!=null){
session.setAttribute("demandeMaterielle", true);
}
if(request.getParameter("chckMut")!=null){
session.setAttribute("demandeMutation", true);
}
if(request.getParameter("chckDep")!=null){
session.setAttribute("demandeDepart", true);
}
getServletContext().getRequestDispatcher(JSP_PATH_DEMANDE+"formulaireDemandeLog.jsp").forward(request, response);
}
} |
Actuellement j'ai essayé de faire le controle en JS quand on clique sur le bouton mais le soucis c'est malgré ma fenetre alert, il lance la servlet apres.
Je me demande donc comment controler et si je dois le faire au niveau de ma servlet ou en JS.
Merci d'avance.