2017-02-20 11 views
0

J'ai un html très simple avec un div pour les messages d'information et un formulaire avec deux boutons (en fait deux types d'entrée présentent et reset)innerHTML ne pas appliquer du gestionnaire d'événements

l'info div # est dynamiquement à (ajax) . En JavaScritpt, j'attends la fenêtre pour charger et j'enregistrer l'entrée de remise à zéro pour l'événement onreset:

window.addEventListener("load", onloadWindow); 
 

 
function onloadWindow() { 
 
    // Document loaded, register onreset event for my form 
 
    document.getElementById("formId").addEventListener("onreset", onresetForm); 
 
} 
 

 
// Reset al the infos 
 
function onresetForm(event) { 
 
    document.getElementById("formId").reset(); 
 
    document.getElementById("info").innerHTML = ''; 
 
}
<body> 
 
    <div id="info"></div> 
 
    <form id='formId' action='#' method='post'> 
 
    <label for='cod'>Code:</label> 
 
    <input id='cod' type='text' name='cod'><br> 
 
    <label for='desc'>Description:</label> 
 
    <input id='desc' type='text' name='desc'><br> 
 
    <label for='type'>Type:</label> 
 
    <input id='type' type='text' name='type'><br> 
 
    <input id='upd' type='submit' name='upd' value='Update'> 
 
    <input id='res' type='reset' name='res' value='Reset'> 
 
    </form> 
 
</body>

Tous les champs de texte sous la forme d'être effacé, mais le innerHTML = '' pour la La fonction div # info ne fonctionne pas, les anciens messages générés par ajax ne sont pas supprimés. Est-ce que j'ai râté quelque chose?

Soit dit en passant, je suis en utilisant un template Smarty pour la forme, mais je ne pense pas que cela est lié à mon problème

+2

Le nom de l'événement doit être "remise à zéro", pas "onreset". – Pointy

+0

Oui et supprimez cette ligne 'document.getElementById (" formId "). Reset();' car cela provoquera une boucle infinie. –

+0

erreur stupide débutant. Je vous remercie – rodrunner

Répondre

1

Le type d'événement/nom est tout simplement reset, pas onreset. Ensuite, dans votre rappel de réinitialisation, vous n'avez plus besoin de réinitialiser le formulaire.

window.addEventListener("load", onloadWindow); 
 

 
function onloadWindow() { 
 
    // Document loaded, register onreset event for my form 
 
    document.getElementById("formId").addEventListener("reset", onresetForm); 
 
} 
 

 
// Reset al the infos 
 
function onresetForm(event) { 
 
    document.getElementById("info").innerHTML = 'form has been reset'; 
 
}
<body> 
 
    <div id="info">Info before reset</div> 
 
    <form id='formId' action='#' method='post'> 
 
    <label for='cod'>Code:</label> 
 
    <input id='cod' type='text' name='cod'><br> 
 
    <label for='desc'>Description:</label> 
 
    <input id='desc' type='text' name='desc'><br> 
 
    <label for='type'>Type:</label> 
 
    <input id='type' type='text' name='type'><br> 
 
    <input id='upd' type='submit' name='upd' value='Update'> 
 
    <input id='res' type='reset' name='res' value='Reset'> 
 
    </form> 
 
</body>