2009-09-17 4 views
0

Fondamentalement, j'ai un formulaire qui contient de jolies informations sensibles à la date. 1) L'utilisateur peut ne pas remarquer que la date est erronée et penser simplement que le serveur a chargé ses données sauvegardées (ce qu'il devrait faire, si la date était correcte). Ils soumettent ensuite les données et elles sont enregistrées à la mauvaise date. Ils ne remarquent pas jusqu'à la semaine suivante ou quand ils se font engueuler pour ne pas avoir soumis de formulaire pour la bonne semaine.Mise en cache des données de formulaire dans le navigateur - solution côté client

2) L'utilisateur remarque mais pense que l'erreur est côté serveur. Ils rechargent le formulaire à partir du navigateur au lieu de soumettre le formulaire de changement de date pour obtenir la bonne date, tout wackiness s'ensuit ...

Donc, je pensais que, puisque toutes les tentatives pour faire face à la mise en cache sur le côté serveur semblent Pour avoir un effet minimal sur la situation, peut-être qu'il y avait une façon plus intelligente ...

Les deux idées sont basées sur l'hypothèse que le navigateur utilise uniquement des données mises en cache si le formulaire d'entrée est vide (aucune valeur). Donc, première question, est-ce vrai?

Dans ce cas, je me demande qui de ces idées seraient plus efficaces:

1) Le script serveur définit simplement toutes les entrées à 0. J'ai alors un script js que la page charge fixe toutes les entrées avec 0 à "". (0 ne sera jamais une entrée possible, dans le cas où cela déclencherait des cloches).

2) Laissez le script du serveur seul, et faites simplement passer le javascript mentionné ci-dessus à travers chaque entrée et changez le value() de l'entrée en attr("value") de l'entrée. Donc, si c'est inexistant, il est vide.

Des failles dans ma compréhension de la mise en cache du navigateur ou autre? Est-ce que les deux méthodes vont mieux

échantillon de la seconde idée:

$("input :text").val(function() { 
     realval = (!($this).attr("value")) ? 0 : $(this).attr("value"); 
     return realval; 
     }); 

Répondre

0

Utilisez différents IDs et noms pour vos champs d'entrée en étendant avec un identifiant de session.

par exemple. l'identifiant de session 12345

<input type="text" id="12345_firstname" name="12345_firstname" /> 

Le navigateur ne touchera pas ces champs.

Une autre approche pourrait être de désactiver tous les champs de saisie et de les remettre à l'état activé avec jQuery après le chargement du document.

<INPUT NAME="firstname" DISABLED> 
$("input").removeAttr("disabled"); 
Questions connexes