2009-10-26 4 views
1

Bonjour c'est ce que j'ai dans la tête de mon dossier:Javascript: Courez soumettre

function entsub(event) 
     { 
       if (event && event.which == 13) 
       write1(); 
       else 
      return true; 

     } 

et dans le corps, ma forme est:

<form id="writeform" name="writeform"> 
    Message: <br /> 
    <textarea name="message" rows="3" id="message" style="width:90%;" onkeypress="return entsub(event)"></textarea> 

    <br /> 
    <input name="send" type="button" id="send" value="Send" onclick="write1()" /> 
    <span id="sent"></span> 
    &nbsp;&nbsp;&nbsp; <input type="reset" value="Reset" /> 
    </form> 

je dois le faire fonctionner que quand j'appuie sur entrer quand je suis dans le textarea, il ne fait pas une nouvelle ligne mais l'envoie [voir mon <input type="button">]

Mais cela ne fonctionnera pas! Il continue à faire une nouvelle ligne ... En utilisant IE8 maintenant.

Répondre

1

Utilisation codeTouche au lieu de quoi. Selon le navigateur, vous devez empêcher l'action par défaut.

Vérifiez event.cancelBubble et event.returnValue pour IE et event.stopPropagation() et event.preventDefault() pour Firefox.

+0

c'est ma réponse acceptée, mais je n'ai pas besoin de ces autres choses, juste keyCode. –

2

Eh bien, je ne suis pas sûr de ce que write1() fait, mais il serait prudent de revenir faux quand la condition est remplie ..

function entsub(event) 
{ 
    if (event && event.keyCode == 13) { 
     write1(); 
     return false; //Return false to prevent default execution 
         //Some browsers use event.preventDefault() etc. 
    }else{ 
     return true; 
    } 
} 
2

Habituellement, le test du navigateur cross est la suivante:

function entsub(e) { 
    if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) { 
     write1(); 
    } 
    return true; 
} 
2

Si vous souhaitez utiliser jquery, vous pouvez le faire:

 $(document).ready(function() { 

      $("#txtTest").keypress(function(e) { 
       var code = (e.keyCode ? e.keyCode : e.which); 

       if (code == 13) { 
        doSomething(); 
        return false; 
       } 
      }); 

     }); 

     function doSomething() { 
      alert("I did it!"); 
     } 

où txtTest est l'identifiant de votre textarea.

0

Pour une manière non-js, je suis sûr que vous pouvez simplement utiliser une entrée de type = "submit" et il utilisera enter pour soumettre le formulaire. À ce moment-là, vous déplaceriez simplement votre événement pour l'intégrer.

0

Un moyen de nettoyage est de changer de <input type="button">-<input type="submit"> et déplacer le onclick="..." à un onsubmit="..." sur le formulaire. Cela ne nécessiterait pas autant de JavaScript sujettes aux erreurs et fonctionnerait dans plus de cas.

+0

le problème est que si je le ferais, il ne l'enverra pas. Je ne sais pas pourquoi, j'ai reçu ce code d'un gars. –