Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/01/2011, 14h45   #1
Membre à l'essai
 
Inscription : mai 2004
Messages : 192
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 192
Points : 20
Points : 20
Par défaut Soumettre formulaire depuis Input type="text"

Bonjour,

Pour un panier, j'ai un formulaire avec des input text afin de saisir les quantités.

Code :
1
2
3
 
<form method="post" action="s.php">
<p><input type="text" name="référence_article sélectionné" value="1" />NOM du machin</p>
Un fois la quantité saisie, il faut cliquer sur un bouton "Recalculer" pour faire la mise à jour.
Certains utilisateurs voudraient que la mise à jour soit automatique quand ils ont saisi la quantité.

Je ne suis pas sûr que ce soit une bonne idée, mais étant nul en javascript je ne sais pas comment faire.

Quel événement détecter ?
Petite phrase magique ?

Merci d'avance.
boteha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 15h01   #2
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 930
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 930
Points : 4 750
Points : 4 750
Bonjour,
sur l'événement onchange de l'input tu appelles la fonction de mise à jour.
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 15h26   #3
Membre à l'essai
 
Inscription : mai 2004
Messages : 192
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 192
Points : 20
Points : 20
Bonjour,

Merci de ta réponse.

Je suis nul en javascript mais j'ai l'impression que ton truc ne vas pas.

Par défaut, la valeur est 1.
Si l'utilisateur veut taper 100, onchange ne va-t-il pas s'appliquer dès 10 ?

Je n'ai pas de script à appeler.
Il faut juste faire comme si le bouton "Recalculer" avait été cliqué, sachant qu'il existe un autre bouton "Valider" sur le même formulaire.
boteha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 16h09   #4
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 930
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 930
Points : 4 750
Points : 4 750
Citation:
Par défaut, la valeur est 1.
Si l'utilisateur veut taper 100, onchange ne va-t-il pas s'appliquer dès 10 ?
il suffit de faire des essais pour ce rendre compte.

Ton bouton Recalcul à bien une action sur son événement onclick du style onclick="Recalcul();", c'est cela qu'il faut mettre sur l'événement onchange de ton input.
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 16h21   #5
Membre à l'essai
 
Inscription : mai 2004
Messages : 192
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 192
Points : 20
Points : 20
Re-bonjour,

Il n'y a aucun code javascript dans le bouton "Recalculer".

C'est un formulaire html qui envoie à un script PHP.
boteha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 20h36   #6
Membre du Club
 
Inscription : juillet 2007
Messages : 310
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 310
Points : 64
Points : 64
En utilisant l'ajax....
Par ex, sur l'évènement onblur de ton champ input text.. Tu appel une méthode javascript qui lui fait un traitement ajax...

Actuellement je suis sur un projet où j'ai développé une IHM avec une gestion de colis contenant des articles. Donc j'avais des boutons "ajouter" et "retirer" qui chacun faisait appel à des méthodes ajax.

Donc là pour ton cas, tu peux à mon avis, utiliser l'évènement onblur, c'est à dire qu'à chaque fois que l'utilisateur sort du champ, donc forcement quand il va cliquer...tu fais appel à une méthode ajax qui met à jour ton panier...
ekremyilmaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 21h20   #7
Membre à l'essai
 
Inscription : mai 2004
Messages : 192
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 192
Points : 20
Points : 20
Merci de ta réponse :

Citation:
En utilisant l'ajax....
Par ex, sur l'évènement onblur de ton champ input text.. Tu appel une méthode javascript qui lui fait un traitement ajax...
Ok pour onblur, mais je ne sais pas ce qu'est un traitement ajax...

Dans mon esprit, une petite phrase magique javascript devrait suffire.

Si onblur, on fait comme si le bouton "Recalculer" avait été cliqué.
boteha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 08h34   #8
Membre du Club
 
Inscription : juillet 2007
Messages : 310
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 310
Points : 64
Points : 64
ok.
Si j'ai bien compris, ton bouton recalculer, envoi le formulaire html et fais les traitements en php.

Si c'est bien ça.

Il te suffit d'écrire ça en javascript :

Code :
1
2
3
4
 
function methodeAppelerDansOnBlur() {
document.form.submit();
}
Bien évidemment la syntaxe de document.form est à revoir selon ton code.
Mais le principe est là, dans ta fonction javascript qui sera appelé dans l'evenemetn onblur, tu met ce bout de code qui va envoyer le formulaire.

Car j'imagine que ton bouton recalculer c'est un simple :
Code :
1
2
 
<input type="submit" value="recalculer"/>
Si c'est ça le bouton de code ci-dessus te suffira..
ekremyilmaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 11h16   #9
Membre à l'essai
 
Inscription : mai 2004
Messages : 192
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 192
Points : 20
Points : 20
Bonjour,

Merci de ta réponse

Effectivement, le bouton submit est bien comme tu dis.

Par contre, il y a plusieurs form dans la page et la soumission par onblur doit s'appliquer uniquement aux input type="text" d'un seul formulaire.
boteha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 11h25   #10
Membre du Club
 
Inscription : juillet 2007
Messages : 310
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 310
Points : 64
Points : 64
ok.
donc tu dois récupérer le nom de ton formulaire et faire dans la méthode javascript : Il faut bien mettre le nom de ton formulaire si tu en a plusieurs

Code :
1
2
 
document.formSaisie.submit();
ekremyilmaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 11h41   #11
Membre à l'essai
 
Inscription : mai 2004
Messages : 192
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 192
Points : 20
Points : 20
Merci de ta réponse,

Code :
1
2
 
document.formSaisie.submit();
formSaisie est le nom du formulaire ?

Il me suffit d'ajouter dans le code html des input type="text" concernés

onblur="document.formSaisie.submit()"

C'est aussi simple que de déclarer une fonction, non ?
boteha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 12h38   #12
Membre du Club
 
Inscription : juillet 2007
Messages : 310
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 310
Points : 64
Points : 64
oui c le nom du formulaire.
tu met tes input à l'intérieur de ton formulaire.

puis pour chaque input, tu appel ta méthode javascript sur la méthode onblur.
et ça devrait faire l'affaire.
ekremyilmaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 13h16   #13
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 930
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 930
Points : 4 750
Points : 4 750
Citation:
Il faut juste faire comme si le bouton "Recalculer" avait été cliqué, sachant qu'il existe un autre bouton "Valider" sur le même formulaire.
faut il en conclure qu'il y a 2 boutons qui soumettent dans ta form?
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 14h01   #14
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 802
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 802
Points : 35 807
Points : 35 807
Une autre question à se poser est : as-tu vraiment besoin d'un aller-retour vers le serveur pour effectuer un simple calcul ? JavaScript peut le faire facilement...
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 14h47   #15
Membre à l'essai
 
Inscription : mai 2004
Messages : 192
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 192
Points : 20
Points : 20
Merci de vos réponses.

Citation:
faut il en conclure qu'il y a 2 boutons qui soumettent dans ta form?
OUI
Il y a le bouton "Recalculer" qui met à jour les valeurs en restant sur la même page et le bouton "Valider" qui met aussi à jour les valeurs mais en passant à l'étape suivante.

onblur doit activer le boutons "Recalculer" et donc la petite phrse à laquelle j'avais pensé n'est pas suffisante.

onblur="document.formSaisie.submit()"

Il faut préciser que le submit s'opère avec le bouton "Recalculer".

Citation:
as-tu vraiment besoin d'un aller-retour vers le serveur pour effectuer un simple calcul ? JavaScript peut le faire facilement...
Il est possible de sortir de cette page pour envoyer un mail ou consulter les Conditions de vente ou ajouter des produits.
Il faut donc que toute modification du formulaire soit enregistrée au niveau serveur, c'est d'ailleurs très rapide.
boteha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 18h48   #16
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 930
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 930
Points : 4 750
Points : 4 750
Citation:
onblur="document.formSaisie.submit()"
si tu dois faire des aller/retour autant utiliser l'événement onchange
petit fichier de test pour te rendre compte
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Test &eacute;v&eacute;nement</title>
</head>
<body>
<div>
<input type="text" value="onchange" onchange="alert(this.value);"><br>
<input type="text" value="onblur"   onblur  ="alert(this.value);"><br>
<input type="text" value="onclick"  onclick ="alert(this.value);"><br>
</div>
</body>
</html>
tu te rendra compte que même si c'est rapide tu n'en feras que quand cela est utile

quoi qu'il arrive, si la fonction attachée aux 2 boutons est la même, elle est traitée différemment côté serveur, oui mais comment dans ce cas. Mais la pas sûr d'avoir bien saisi...
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 19h22   #17
Membre à l'essai
 
Inscription : mai 2004
Messages : 192
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 192
Points : 20
Points : 20
Bonsoir,

Merci de ton test.

En fait, je ne vois pas la différence entre onchange et onblur.

Dans les deux cas, tu es obligé de sortir de l'input et de cliquer sur la page pour provoquer l'événement, ce qui n'est pas un comportement naturel, autant obliger à cliquer sur recalculer.

Autrement, pour te rendre compte, il s'agit du site touslescables.com.


http://www.touslescables.com/


Ajoute un ou mieux plusieurs produits au panier pour voir la page "Touslescables.com : Validation quantités".

Autrement, ce sont quelques utilisateurs qui suggèrent la mise à jour automatique car ils ont vu ça ailleurs, mais dans des sites où l'ergonomie d'achat est différente.

Je ne suis pas sûr que ce soit une bonne idée pour l'ergonomie de touslescables.com mais je réfléchis au problème (avec votre aide).

L'avantage d'une mise à jour non-automatique et que tu peiux d'abord constituer ton panier, pusi préciser les qiuantités, puis valider en une seule fois.
boteha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 21h03   #18
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 930
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 930
Points : 4 750
Points : 4 750
Citation:
En fait, je ne vois pas la différence entre onchange et onblur.
- onchange n'est déclenché que si le contenu change entre la prise de focus et la perte de focus
- onblur est déclenché à chaque fois que l'élément perd le focus
donc si l'on se déplace par tabulation il peut y avoir des échanges inutiles, ce n'est pas le cas, dans ton cas puisque le déplacement par tabulation n'est pas prévu.

Concernant le lien fourni, effectivement il y a soumission dans les deux cas avec coté serveur récupération de la value du name="choix", donc sauf à mettre une simulation de click, pas sûr que cela soit encore autorisé, un document.form.submit() est insuffisant.

Le faire en javascript embarqué n'est pas non plus réalisable rapidement il te manque une donnée à savoir le prix unitaire. cela nécessite un peu plus qu'un correctif.

Citation:
Autrement, ce sont quelques utilisateurs qui suggèrent la mise à jour automatique car ils ont vu ça ailleurs, mais dans des sites où l'ergonomie d'achat est différente.
ils ont forcément raison...bien que sur ce genre de site c'est le besoin qui est important et non pas le coût, en premier lieu s'entend.

Ils ne savaient pas que c'était impossible, alors ils l'ont fait.
Mark Twain.

Merci les papillotes...
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 21h12   #19
Membre à l'essai
 
Inscription : mai 2004
Messages : 192
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 192
Points : 20
Points : 20
Merci beaucoup de tes commentaires.

Je continue à réfléchir...
boteha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 16h00   #20
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 930
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 930
Points : 4 750
Points : 4 750
as tu essayé ceci, donc sauf à mettre une simulation de click?
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h28.


 
 
 
 
Partenaires

Hébergement Web