2010-10-01 8 views
4

J'ai écrit un écouteur d'événement pour un envoi de formulaire qui me cause quelques problèmes. Lorsque vous appuyez sur «Entrée» dans le champ de texte, tout fonctionne correctement. Cependant, j'ai un span (avec background-image) qui soumet le formulaire aussi bien via un événement click. Cela ne fonctionne pas correctement et je n'arrive pas à comprendre pourquoi.Envoyer un écouteur d'événement pour un formulaire

Voici le HTML de base:

<form name="myForm"> 
    <input type="text" name="search" /> 
    <span id="search-button"></span> 
</form> 

Voici la JS pour l'écouteur d'événement:

function evtSubmit(e) { 
    // code 
    e.preventDefault(); 
}; 

var myform = document.myForm; 
if (myform.addEventListener) { 
    myform.addEventListener('submit', evtSubmit, false); 
} 

Et voici la JS pour la 'durée' et son événement click:

var searchButton = document.getElementById('search-button'); 
if (searchButton) { 
searchButton.onclick = function() { 
    document.myForm.submit(); 
}; 
} 

REMARQUE: le JS de l'événement click de l'étendue se trouve dans un fichier JS distinct et dans une atm inaccessible, donc la modification de ce script est le ss d'une option. Si la seule façon de résoudre ce problème est de mettre à jour ce fichier, je peux ... mais en raison de processus indépendants de ma volonté, c'est beaucoup plus difficile.

+1

Ceci est en fait une bonne question qui serait probablement obtenir plus de points de vue si elle était intitulé « Redéfinition le Javascript intégré soumettre méthode sur un formulaire » –

Répondre

5

Lors de l'appel form.submit(), l'événement onsubmit ne sera pas déclenché. Comme alternative, vous pouvez définir l'attribut d'action à javascript:evtSubmit(event):

function evtSubmit(e) { 
    // code 
    e.preventDefault(); 
}; 

var myform = document.myForm; 
myform.setAttribute('action', 'javascript:evtSubmit();'); 
+0

Gotcha . réécrire l'événement «submit» sur l'objet prototype résoudre le problème? – CoryDorning

+0

Homme, tu sauves ma journée! :) – BananaDeveloper

Questions connexes