2009-12-01 8 views
5

Je souhaite que la fonction de saisie automatique des formulaires de Safari fonctionne sur les formulaires de mon application Web. Tous nos événements de soumission de formulaire sont empêchés et à la place nous envoyer des données au serveur via XHR (Ajax) POST.Forcer Safari à remplir l'entrée lors de l'utilisation de JavaScript pour empêcher l'envoi du formulaire

Le problème est, par défaut de Safari pour créer une nouvelle entrée dans sa AutoFill (autocomplete) « base de données » nécessite au feu et bulle sur toute la hauteur de l'événement soumettre le formulaire. De mes tests c'est ce que j'ai conclu et travaille pour les méthodes GET et POST. Ce numéro est et non présent dans Firefox; tous nos formulaires conservent les valeurs précédentes qui ont été «soumises» pour chaque champ. C'est le comportement souhaité que nous voulons dans Safari.

Dans notre application, un utilisateur remplira le même formulaire plusieurs fois sur plusieurs sessions. Dans certains cas, il serait utile pour le navigateur de compléter automatiquement (AutoFill dans le cas de Safari) ces champs pour l'utilisateur en fonction de leurs valeurs précédemment soumises.

Je me demandais si quelqu'un d'autre a rencontré ce problème avec Safari? Et mieux encore s'ils disposent d'une solution (même si spécifique à Safari) pour dire (ou forcer) à Safari d'enregistrer des valeurs de champs de formulaire dans sa base de données AutoFill même si l'événement submit du formulaire est évité?

J'ai essayé preventDefault() plus haut dans le DOM, laissant l'événement submit remonter vers le noeud DOM parent du formulaire; pas de différence de comportement. Il est possible que ce soit juste un bug dans Safari ...

+0

J'ai le même problème dans Safari et Chrome (pas surprenant). Je ne trouve pas de réponse Avez-vous trouvé une solution depuis l'année dernière? –

+0

Jean, je n'ai pas :-(et ce comportement est très ennuyeux –

+0

Toutes les mises à jour sur ce problème? – mkurz

Répondre

0

Pour un formulaire qui utilise HTTPS, c'est le comportement attendu pour Safari, qui est contre les standards W3C. La seule façon de contourner cela est d'inclure une image, ou un tag similaire, qui pointe vers une ressource HTTP. Bien sûr, vous perdrez votre cadenas et votre page sera considérée comme non sécurisée.