J'ai un formulaire avec plusieurs boutons de soumission, dont chacun est pertinent à la façon dont l'utilisateur veut les données enregistrées et/ou chargées. Le problème est (ou était) que si un utilisateur appuyait sur entrer la dernière (ou toute autre) entrée dans le formulaire, le bouton d'envoi qui semblait être appelé était le "chargement enregistré formé" qui est en haut de la forme. Toutes les tentatives d'utilisateur javascript pour avoir le bouton de retour par défaut sur le "formulaire de sauvegarde" semblaient inutiles, presque comme si le navigateur était trop occupé à soumettre le formulaire pour avoir des interférences. Enfin, dans FireFox 3.5, le script côté serveur faisait écho à ce qu'il avait reçu pour la variable post
et a découvert qu'aucune des valeurs du bouton d'envoi n'était transmise au serveur. Comme il se trouve, j'ai des crochets dans le script pour quand l'utilisateur frappe "Enregistrer" ou "Enregistrer et imprimer", etc, mais si l'utilisateur utilise la "page de chargement" il met simplement à jour une variable et continue de charger la page normalement avec cette variable en contexte.Est-ce que toutes les friandises du navigateur entrent (clé 13) le même formulaire?
Donc, sans aucune valeur de bouton de soumission, il a fait la même chose, il a simplement chargé la page.
Ainsi, à la grande question:
Est-ce le comportement du navigateur typique? Peut-être même un comportement de navigateur fiable? Est-ce que frapper frappe entrer toujours le formulaire comme si aucun bouton de soumission n'avait été appuyé, ou est-ce que certains navigateurs aiment choisir un bouton à utiliser par défaut quand l'utilisateur appuie sur entrer?
Si c'est un comportement typique, quel est le plan d'action suggéré? J'allais faire en sorte que le script enregistre n'importe quoi, peu importe quoi, tant qu'il y avait des données dans le formulaire, mais ensuite je me suis rendu compte que c'était encore plus dangereux, parce que si l'utilisateur chargeait un formulaire sauvé, former les dates et les hits "Load Form", alors il va enregistrer les données de formulaire du formulaire perméable pour les nouvelles dates qu'ils ont demandées.
je considérais sa mise en place afin que changer les données du formulaire de charge (sélectionne avec les dates et autres détails) dégageraient le formulaire afin que le serveur recieved encore une forme vide et ne serait donc pas écraser les données précédentes, mais est risqué aussi, car beaucoup d'utilisateurs noteront et penseront que leurs données ont été perdues, etc., et il y a toujours une petite chance que l'utilisateur en finisse avec le formulaire, monte au sommet et tripote le formulaire -load sélectionne juste pour confirmer qu'ils ont choisi le bon choix et ensuite être forcé de repartir de zéro. Je devrais juste avoir deux formes, une pour charger, une pour les données, mais le problème avec cela est que toutes les données dans la partie de chargement du formulaire sont utilisées par le formulaire principal. Je pourrais écrire plus de js pour combiner les deux sur soumettre, ou cacher les données dans la deuxième forme, mais tout cela semble maladroit. Essentiellement, j'ai besoin d'une configuration telle que la partie supérieure du formulaire soit indépendante de la forme principale, mais pas vice versa. Soumettre la forme supérieure ne soumet pas le plus bas, mais soumettre le plus bas soumet le plus haut.
Bon, j'ai assez longtemps. Fondamentalement, je me demande si une solution existe déjà ou si quelqu'un d'autre a rencontré cela et a trouvé une solution intelligente. Je pensais simplement avoir la forme enregistrer chaque fois que le formulaire n'était pas vide était assez intelligent, jusqu'à ce qu'il me vienne à l'esprit que lorsque l'utilisateur va à la page, il charge automatiquement le formulaire le plus applicable, changeant ainsi les variables de charge sera presque toujours causé des problèmes.
Après avoir lu le double possible que Artelius était assez bon pour attirer mon attention, je ne suis toujours pas clair sur la cohérence entre les différents navigateurs en ce qui concerne le bouton Enter comme soumettre. Il semble que presque tout le monde dans cette question a supposé que frapper pressait le premier envoi disponible, qui était aussi mon hypothèse jusqu'à ce qu'un ami m'a suggéré de cacher (via CSS) un autre bouton de soumission en haut du formulaire avec tout ce que je voulais entrer pour atteindre. C'est quand cela m'a donné les mêmes résultats que j'ai finalement vu ce qui était passé au serveur (c'est-à-dire rien en termes de valeur de soumission). Cela signifie donc que ce soit
a) la touche « entrée en aucun bouton soumettre simplement soumettre » est un nouveau comportement pour certains ou tous les navigateurs,
b) la touche « entrée comme simplement soumettre » vs « Enter en premier le bouton d'envoi » c) Tout le monde continue de supposer que le bouton "entrer en tant que premier envoi" est le cas parce que la plupart d'entre nous seulement le code if (situation1) else (assume not situation1)
et aucun d'entre nous vraiment sûr de ce que fait le navigateur.
Je doute fortement que ce soit le dernier, mais encore une fois, je doute aussi que la plupart d'entre nous savent quels navigateurs font quoi. J'aimerai bien qu'il y ait une réponse directe que je pourrais transmettre. Oh, et enfin: Bien que je sache qu'il serait beaucoup plus simple d'utiliser les boutons, et je prends cela sérieusement en considération, je voudrais aussi considérer d'autres options, puisque vraiment le seul besoin de moins de boutons de soumission, j'ai est pour quand les utilisateurs frappent entrer au lieu d'un des boutons.
En fait, me laissent aller à une seconde de plus:
La seule chose que je vraiment besoin de savoir est si oui ou non ils ont frappé entrer par l'une des entrées de texte. Si je pouvais transmettre cela au serveur, je saurais si je devrais enregistrer ou recharger le formulaire. Mais le problème est (ou du moins ce que j'ai eu des problèmes avec), c'est que lorsque l'utilisateur frappe entrer dans une entrée, il semble qu'il n'y a plus de temps de jeu avec js pour capturer quoi que ce soit, et dans certains cas comme le navigateur déclenche le onclick
pour n'importe quel bouton de soumission et donc ne me permettant pas vraiment de connaître l'événement réel qui a déclenché cela. Je jouerai plus avec jquery, mais ce comportement a-t-il été observé par quelqu'un d'autre?
double possible: http : // stackoverflow.com/questions/48/multiple-soumettre-boutons-sur-un-formulaire – Artelius
Doh! Bonne prise. J'aimerais quand même avoir plus de rétroaction sur s'il y a une façon de faire 2 formulaires mais dont l'un déclenche l'autre (pour ainsi dire). – Anthony