Forms com poucos Enters

Num projecto em JSF implementar o seguinte requisito : o formulário só deve ser submetido ao escolher umas das acções (botões/links) disponíveis..

Isto é o contrário de: se um campo de texto estiver seleccionad

o o formulário é submetido se carregarmos a tecla enter.
Isto acontece para campos com a tag input; não acontece por exemplo para a textarea.

Um requisito óbvio (usabilidade) é que o site continue a ser navegável com teclas. Logo, inputs do tipo submit e button, bem como todas as outras tags, deveriam continuar a processar o enter.

Eis a solução final, testada em FF2 e IE6:

<html>
  <head>
    <title>This form doesn't submit with Enter key</title>
  </head>
  <body>
    <form id="formID" .../>
       ...
    </form>
  
    <script type="text/javascript"><!--

/* Checks if enter key was pressed and this is allowed.
 * This functions tries to solve issue : "If a text field has focus, the 
 * form will submit upon hitting the enter (or return) key."
 * @param e the event
 * @return true if enter key  is pressed for input fields (input tags not of 
 * type 'button' or 'submit') ; false otrhewise
 */
function disableEnterKeyForInputs(e){

  // next lines suport multibrowser
  var key = (window.event) ? event.keyCode : e.which;
  var srcElement = (window.event) ? event.srcElement : e.target;
  
  if (key == 13) {
    var tagName = srcElement.tagName.toUpperCase();
    if ( tagName == 'INPUT' ) {
       // only inputTags have enter issue
       // and buttons and submit should respond to enter
       switch ( srcElement.type.toUpperCase() ){
         case 'BUTTON' :
         case 'SUBMIT' :
            return true;
          break;
         default :
            return false;
       }
    }
  }
  return true;
}

if ( (theForm = document.getElementById("formID") ) != null)   
  theForm.onkeypress=disableEnterKeyForInputs;

// -->
    </script>
  </body>
</html>

tanx to Ricardo Antunes, Lurdes Spínola

Leituras

JSF Config Metadata: ‘atribute’ e ‘property’

A framework Java Server Faces (JSF) é configurada com um ou mais ficheiros 'faces-config.xml'. Além de várias tags para configuração do runtime, a especificação propõe a utilização de

metatags informativas que possibilitam ajuda ao desenvolvimento.

Tags para metadata em ficheiros xml de configuração são usuais, como por exemplo ou .
Novo para mim foram as tags e . De [3]


Use to describe an attribute of a custom component, converter, validator, or renderer.

Use to describe a property of a custom component, converter, or validator.

Quando utilizadas em converters ou validators permite descrever as propriedades e atributos que estes possuem.
Por exemplo


<...>

myNumberValidator

mypackage.MyNumberValidator

minNumber

java.lang.Integer

0

5


75% De Comision - Como Curar Las Hemorroides Naturalmente

or>
<...>

Isto permite ao IDE ajudar o programador pois ao escrever


  

poderá sugerir


  
  

  
  

Neste momento ando a utilizar o Oracle JDeveloper 10.1.3 que tem algumas funcionalidades para JSF mas não esta.

Leituras

zp8497586rq