Javascript et liste déroulante

Résolu
Bonjour,

Je souhaite vérifier en javascript que au moins un élement de ma liste deroulante multiple ait été sélectionné... Mais je ne m'en sors pas !!!

Voici mon code pr la vérification :

function select_selected(form){

for (i=0, n=form.elements.length; i<n; i++){
if ((form.elements[i].selected == true))
return true }
return false;

}

Et voici mon code sur ma page web

<form method="post" action="" name="supr_club">
Clubs à supprimer :
<select name="club_supr[]" multiple="true" size="8">
<?php
$select = "select * from clubs order by nom";
$result = mysql_query($select);
while($data = mysql_fetch_array($result)){
echo '<option value="'.$data['id'].'">'.$data['nom'].'</option>';
}
?>
</select> 
<input type="hidden" name="champ" value="<?php echo $champ; ?>">
<input type="hidden" name="asupr" value="asupr">
<input type="button" value="Supprimer" onclick="javascript:select_selected(this.form);">
</form>

Je sature.....Merci de votre aide ;)
Configuration: Windows XP
Firefox 2.0.0.16

3 réponses

  1. Contributeur
    voici ce qui pourrait faire l'affaire:
    function makeXHR(){
    	var xmlHttp;
    	try
    	{
    		// Firefox, Opera 8.0+, Safari
    		xmlHttp=new XMLHttpRequest();
    	}
    	catch (e)
    	{
    		// Internet Explorer
    		try
    		{
    			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    		}
    		catch (e)
    		{
    			try
    			{
    				xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    			}
    			catch (e)
    			{
    				alert("Your browser does not support AJAX!");
    				return false;
    			}
    		}
    	}
    	return xmlHttp;
    }
    
    function select_selected(form){
    	var select = form.getElementsByTagName("select")[0];
    	var au_moins_un = false;
    	for (i = 0; i<select.length; i++){
    		if (select.options[i].selected){
    			au_moins_un = true;
    			// ici on peut mettre le code Ajax pour supprimer le club select.options[i].value
    			/*
    			var xhr = makeXHR();
    			xhr.onreadystatechange = function()	{
    				if (xhr.readyState == 4) {
    					if (xhr.status == 200){
    						// action à faire lorsque la suppression s'est bien passée.
    					}
    				}
    			}
    			xhr.open("POST","ajax/remove_club.php", true);
    			xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    			xhr.send("remove_club="+select.options[i].value);
    			*/
    		}
    	}
    	return au_moins_un;
    }
    
    
    
    <form method="post" action="" name="supr_club">
    	Clubs à supprimer : 
    	<select name="club_supr[]" multiple="multiple" size="8">
    		<?php
    		$select = "SELECT * FROM clubs ORDER BY nom;";
    		$result = mysql_query($select);
    		while($data = mysql_fetch_array($result)){
    			echo '<option value="'.$data['id'].'">'.$data['nom'].'</option>';
    		}
    	?>
    	</select> 
    	<input type="hidden" name="champ" <?php echo "value='$champ'"; ?> />
    	<input type="hidden" name="asupr" value="asupr" />
    	<input type="button" value="Supprimer" onclick="select_selected(this.form);" />
    </form> 
    
    1. ou sinon vu que tu verifie au click, tu peux aussi juste faire:

      function select_selected(form){

      var select = document.getElementById("club_supr");

      verif=false;

      for (i=0; i<select.length; i++)
      {
      if (select.options[i].selected == true)
      verif =true;
      }

      return verif;
      }

      et juste changer:
      <select name="club_supr[]" multiple="multiple" size="8">

      en

      <select id="club_supr" name="club_supr[]" multiple="true" size="8">

      cordialement, dreamfeeder.