Aller au contenu

probleme onmouseout avec firefox


Sujets conseillés

Guest laurent2004
Posté

Bonjour à tous,

J'ai un petit script qui fonctionne bien sous IE mais pas avec FF et Netscape.

Mon code (en php):

echo "<input type=text name='nbnuit[]' size=1 maxlength=2 value=".$row['nbnuit']." onmouseover='this.focus()' onmouseout='submitform()'>";

après mon formulaire j'ai çà:

<script language="JavaScript">

function submitform()

{

document.myform.submit();

}

</SCRIPT>

Je voudrais que quand la souris quitte le champs 'nbnuit' çà valide le formulaire automatiquement grâce à onmouseout. Sous Firefox le formulaire est validé dès que la souris passe sur le champs ce qui fait qu'on a aucune chance de pouvoir changer la valeur.

Comment faire fonctionner onmouseout avec Firefox?

Merci pour votre aide :boude:

Posté

le probleme de ce genre de script est que si l'utilisateur balade sa souris, et s'il passe dessus ca donne le focus et quand il sors du champ ca va envoyer le formulaire vide.

Sinon pour envoyer le formulaire essaye plutot avec un onBlur (perte du focus)

Posté

essaye avec ca :

echo "<input type=text name='nbnuit[]' size=1 maxlength=2 value=".$row['nbnuit']." onmouseover='this.focus();' onmouseout='if(document.myform.nbnuit[].value!=\'\'){document.myform.submit();}'>";

Guest laurent2004
Posté

salut,

merci pour ton aide,j'ai essayé avec onBlur mais çà ne marche pas car plus loin dans ma page j'ai un drop down menu et si l'utilisateur clique directement dessus çà plante.

J'ai essayé avec ton 2e script et là çà ne marche pas même sur IE.

Posté

Le probleme venait des ' remplace les par des \" par contre pour le champs j'utilise son numéro, car je ne sais pas si le nom avec les [] passe. Essaye toujours. En tout cas j'ai essayer ce bout de script la et ca passe sur IE et Firefox

<?

echo "<input type=text name=\"nbnuit[]\" size=1 maxlength=2 value=\"\" onMouseOver=\"this.focus();\" onMouseOut=\"if(document.myform.elements[0].value != ''){document.myform.submit();}\">";

?>

Guest laurent2004
Posté

ca refonctionne sous IE mais çà me fait pareil sous Firefox impossible de faire fonctionner le onmouseout, çà valide le formulaire sur le onmouseover.

J'ai remis ton code en enlevant le[0] de elements sinon çà ne marchait pas:

echo "<input type=text name=\"nbnuit[]\" size=1 maxlength=2 value=".$row['nbnuit']." onMouseOver=\"this.focus();\" onMouseOut=\"if(document.myform.elements.value != ''){document.myform.submit();}\">";

Posté

la c normal ca ne marche pas.

en fait dans le cas présent, le [0] specifie l'index de ton controle dans le formulaire.

Donc si ton controle est le 4 eme, il aura un index a 3.

Remet le [0] et donne lui le bon index.

Si c'est le premier du formulaire myform --> Index = 0

Si c'est le second element du formulaire myform --> Index = 1

etc.

Guest laurent2004
Posté

j'ai rééssayé avec l'index [0] mais çà marche toujours pas sous FF B)

Guest laurent2004
Posté (modifié)

ok voilà ce que j'ai dans mon formulaire, l'idée est que l'on puisse changer le nombre de nuits par un onmouseout en sachant qu'il y a aussi un drop down menu qui prevalide le formulaire


<form name="myform" method="post" action=<? $_SERVER['PHP_SELF']?>>
<table class=table bordercolor=black border=1 cellpadding=5 cellspacing=2 cols=7 width=700>
<?
global $dbServer, $dbUser, $dbPass, $dbName;
$cxn = _AT_ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);

$result = mysql_query("select * from dates order by id asc");


echo "<tr><td colspan=7>Détail de votre réservation</td></tr>";
if(mysql_num_rows($result)==0)
{
echo "<tr><td colspan=7>Vous n'avez pas de réservation en cours</td></tr>";
}
else
{
echo "<tr><td>Ref</td><td width=300>Arrivée:</td><td>Nbre de nuits</td><td>Type chambre</td></tr>";
while($row = mysql_fetch_assoc($result))
{
echo "<tr>";
echo "<td>".$row["id"]."<input type='hidden' name='id[]' value='".$row["id"]."'></td>";
echo "<td>";
$row["stamp"];
setlocale(LC_TIME, "french");
$date_resa = strftime("%A %d %B %Y",$row["stamp"]);
echo ucwords($date_resa);



echo "</td><td><input id='nuit' type=text name='nbnuit[]' size=1 maxlength=2 value=".$row['nbnuit']." onmouseover='this.focus()' onmouseout='submitform()'></td>";


//echo "</td><td><input type=text name=\"nbnuit[]\" size=1 maxlength=2 value=".$row['nbnuit']." onMouseOver=\"this.focus();\" //onMouseOut=\"if(document.myform.elements.value != ''){document.myform.submit();}\"></td>";

//echo "</td><td><div onmouseout='submitform()'>
//<input type=text name='nbnuit[]' size=1 maxlength=2 value=".$row['nbnuit']." onmouseover='this.focus()' >
//</div></td>";



echo "<td>";




echo " </td>";
echo "<td>";
?>
<?
$valeur = $row['type_ch'];
$valeur_list = array("","Single","Double","Twin","Triple","Suite");
?>
<select name="type_ch[]" size="1" onChange="submitform()">
<?php
foreach ($valeur_list as $var) {
$selected = ($var == $valeur) ? " selected" : "";
echo "<option$selected>$var</option>\n";
}
?>
</select>
<?
echo "</td>";
echo "<td>";


echo "</td>";
echo '<td> ';
echo "</td></tr>";

// FIN WHILE
}

echo "<tr><td colspan=7 align=center>";
echo "<input type='submit' name='submit2' value='Valider'>";
echo "</td></tr>";

if(isset($_POST['submit2'])||isset($_POST['type_ch']))
{ for(;
list(, $someValue1 ) = each( $_POST['nbnuit'] ) ,
list(, $someValue3 ) = each( $_POST['type_ch'] ) , list(, $someValue2 ) = each( $_POST['id'] )
{
$update="UPDATE `dates` SET `nbnuit` = $someValue1, `type_ch` = '$someValue3', `nbpers` = '$someValue4', `dates_resa` = '$someValue5' where id=$someValue2";
$updateMe = mysql_query($update) or die(mysql_error());
if($updateMe)
{
print "<script language=\"JavaScript\">";
print "window.location = '$_SERVER[PHP_SELF]' ";
print "</script>";
}
}
}
}

?>

</table>
</form>
<script language="JavaScript">
function submitform()
{
document.myform.submit();
}
</SCRIPT>

[modérateur: merci d'utiliser les codebox pour les longues portions de code ; de ne pas mettre pleins de lignes vides, et ce dans le but de simplifier la lecture]

Modifié par Loupilo

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...