IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Faire des UNDO sur des modifications d'input


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 49
    Par défaut Faire des UNDO sur des modifications d'input
    bonjour

    j'ai bien cherché (ou très mal) mais je ne trouve rien alors me v'la :

    est-ce que vous avez entendu parlé, vu, ou créé, un set de fonctions en javascript pour faire des retour arrières sur des modifications dans des input ?

    EXEMPLE : en mode admin, j'ai une appli web au boulot, qui génère des table avec plein de lignes et plein de iput text / select, pour mettre à jour une base de données. Il y a un bouton submit global, un pour chaque ligne, et un bouton delete pour chaque ligne. le Submit fait un $POST qui met à jour la base, rien de plus simple. voir ci-dessous :


    L'idée : un bouton retour arrière, car quand j'ai modifié 15 inputs et que je me suis gouré sur le dernier, j'ai le choix entre tout annuler, tout submiter, ou submiter juste ma ligne mal modifiée, et je suis tellement bête que je ne sais plus la valeur d'origine dans le input ...

    Alors à votre avis, comment ce serait faisable le plus facilement ?
    - stocker toutes les valeurs des input dans une table en json ?
    - faire une variable array[0..n] qui stockerait les actions effectuées au fur et à mesure ?
    - autre ?

    merci pour les idées ! Je ne demande pas de code, hein, juste quelques idées pour démarrer...

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 49
    Par défaut système d'undo avec closure
    Merci aux développeurs de DOJO qui m'ont aiguillé vers les closure()

    en effet le main problème est de stocker des fonctions avec des variables dont la valeur doit être celle à l'époque du stockage et pas de l'exécution ...

    En clair si on stocke une fonction avec des variables, celles ci sont évaluées lors de l'exécution de la fonction ... et y faut pas !

    On m'a présenté ceci : explications sur les closures

    puis ce développement du gars qui m'a expliqué : projet memento, j'ai rien compris

    bref, j'ai besoin d'aide pour démarrer ...

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Tout dépend du niveau auquel tu souhaites gérer l'historique ...
    et de quand les modifs sont prises en compte...
    Si ça se fait en direct sur tes tables et que tu souhaites conserver un historique, ce n'est pas au niveau de js que tu trouveras le salut...
    si c'est juste conserver un historique des modifs sur la page coté client avant validation et modif de table alors il te faudra sauvegarder temporairement les selections dans des objets ou arrays ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Salut,

    Dans un premier temps je regarderait du coté de l'ergonomie.

    Par exemple, si tu veux faire un retour en arrière pour un champ
    est-ce que tu va mettre un bouton "undo" en vis à vis de chaque champ ?

    Ou est-ce que tu veux un bouton "undo" général qui va permettre
    de remettre la valeur initiale du dernier champ rempli, puis de l'avant dernier,
    etc... ?

    Est-ce que tu veux un bouton "undo" par ligne ?

    A partir de là il sera plus facile de faire un choix technique.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 49
    Par défaut
    justement j'avais réfléchi à la question et le plus simple pour tout le monde c'est un bouton undo/redo par table (une table et un submit par iframe).

    et comme j'utilise dojo avec des onglets, plusieurs iframes donc plusieurs tables sont susceptibles d'être modifiés en parallèle.

    Sur le principe des closures je pense saisir le concept (sauvegarder une fonction qui va appliquer une liste de modifications), mais c'est le fonctionnement et donc le codage que je ne comprends pas encore, cf les liens que j'ai posté...

    le contenu des fonctions à sauvegarder / appliquer sera hyper simple : ça concerne des input text/select, donc il y aura du focus(), du value=(), et du backgroundColor. de toutes les façons on met ce qu'on veut dans les fonctions d'undo, ce que je veux comprendre c'est comment stocker des valeurs de variables qui ne soient pas évaluées au moment de l'appel.

  6. #6
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Je comprends pas ce que tu veux dire par "pas évaluée au moment de l'appel" ?

    Sinon pour sauver les champs tu peux assigner l'évènement onchange et
    appeler une fonction pour empiler les données.

    par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type='text' onchange='sauver(this)' />
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    var undolist = [];
     
    function sauver(field) {
      undolist.push([ field, field.value ]); // on sauve une référence sur le champ et sa valeur actuelle
    }
     
    function undo() {
       var item = undolist.pop();
       item[0].value = item[1];
    }
    c'est juste une piste, il y a surement plein de détails à régler.

Discussions similaires

  1. Réponses: 15
    Dernier message: 28/11/2012, 22h42
  2. Comment ajouter des séries dans des graphes sur des feuilles variables
    Par Molomarcopolo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/07/2012, 16h26
  3. Trigger pour mettre des droits sur des procedures et des vues
    Par briino dans le forum Développement
    Réponses: 3
    Dernier message: 23/09/2009, 09h44
  4. [VB6] Comment faire un update sur des textbox qui sont créés
    Par bb62 dans le forum VB 6 et antérieur
    Réponses: 27
    Dernier message: 16/02/2006, 14h52
  5. [VB.Net] Faire du JS sur des contrôles côté serveur
    Par TagadaTsoin dans le forum ASP.NET
    Réponses: 4
    Dernier message: 03/11/2003, 15h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo