2010-10-11 10 views
2

je le code suivant:Dojo - forme la soumission en appuyant sur Entrée

<div dojoType="dijit.layout.ContentPane" id="filterForm" style="padding: 3px"> 
    <form dojoType="dijit.form.Form"> 
     <input dojoType="dijit.form.TextBox" style="width: 120px" /> 
     <button dojoType="dijit.form.Button" type="submit"> 
      Filter 
     </button> 
     <script type="dojo/connect" event="onSubmit" args="evt"> 
      filterGrid(); 
      dojo.stopEvent(evt); 
     </script> 
    </form> 
</div> 

Il fonctionne comme prévu si je clique sur le bouton de filtre, mais je voudrais le même comportement lorsque l'utilisateur appuie sur Entrée, tandis que zone de texte se concentre . Cela n'arrive pas, cependant. En fait, rien ne se passe quand j'appuie sur Entrée. Comment puis-je exécuter le gestionnaire onSubmit en appuyant sur Entrée? Merci.

+0

Sure semble fonctionner pour moi sur FF 3.6, Chrome 7, IE 8 ... http://jsfiddle.net/x3MMA/ (ajout d'un fichier console.log à tester). Avons-nous oublié certains détails du problème? –

+0

Merci encore pour votre soutien, Ken. J'ai écrit ci-dessous sur la cause du problème. – Dario

Répondre

4

Dario cela devrait fonctionner. Quelque chose d'autre dans votre environnement le fout en l'air. Vous pourriez avoir un autre script interceptant les frappes. Cela pourrait être dans vos scripts sur la page Web ou même dans votre environnement de navigateur, comme un script de graissage ou tout autre extension.

Vous devez configurer un scénario de test minimal dans lequel la page Web ne contient qu'un html minimal minimal, y compris le formulaire et le dojo de chargement, à partir de l'aol ou google CDN et essayez l'entrée. Si cela ne fonctionne pas, donnez-nous une copie complète (ou l'adresse URL) de votre test et nous essaierons de voir ce qui ne va pas, mais je suppose que cela fonctionnera. Ensuite, vous devez travailler à rebours entre le scénario de test minimal et votre environnement de site complet jusqu'à ce que vous trouviez le bit de conflit.

+1

Caleb, tu as raison. Il semble que le DataGrid (qui est juste en dessous) bloque mes frappes. Cela ne fonctionne que si je clique sur le champ de texte, puis cliquez ailleurs sur la page, puis cliquez de nouveau sur le champ de texte et appuyez sur Entrée :) – Dario

+1

Dario merci de poster le problème résolu. Il pourrait être utile de soumettre ceci comme un bug au projet dojo car il ne devrait certainement pas interagir de cette façon. – Caleb

0

C'est la solution que j'ai écrite et travaillée pour moi. Soumettre sur la touche Entrée "dijit/form/ValidationTextBox" en utilisant des tests Mocha

keyEventDispatch: function (élément, code, completionFn) {

 var keyboardEvent = document.createEvent("KeyboardEvent"); 

      Object.defineProperty(keyboardEvent, 'keyCode', { 
      get : function() { 
       return this.keyCodeVal; 
      } 
      }); 
      Object.defineProperty(keyboardEvent, 'which', { 
      get : function() { 
       return this.keyCodeVal; 
      } 
      }); 
      var initMethod = typeof keyboardEvent.initKeyboardEvent !== 'undefined' ? "initKeyboardEvent" : "initKeyEvent"; 
      keyboardEvent[initMethod](
      "keypress", // event type : keydown, keyup, keypress 
      true, // bubbles 
      true, // cancelable 
      window, // viewArg: should be window 
      false, // ctrlKeyArg 
      false, // altKeyArg 
      false, // shiftKeyArg 
      false, // metaKeyArg 
      code, // keyCodeArg : unsigned long the virtual key code, else 0 
      0 // charCodeArgs : unsigned long the Unicode character associated with the depressed key, else 0 
     ); 
      keyboardEvent.keyCodeVal = code; 
      if (element.dispatchEvent) element.dispatchEvent(keyboardEvent); 
      if (completionFn) completionFn(); 
    }, 

et dans votre test, vous appellerez keyEventDispatch (textboxes 13);

espoir qui aide

0

je rencontrais même question que cela ne fonctionnait pas sur Internet Explorer uniquement (fonctionne avec Firefox, Chrome fin) pour notre ancienne base de code en utilisant Dojo 1.5.0.

Il s'est avéré être a bug dans Dojo avec IE problème avec le formulaire caché et il a été corrigé par this patch.

Questions connexes