Ir para o conteúdo

 Voltar a Fórum do For...
Tela cheia

Digitação em caixa alta

4 de Setembro de 2012, 0:38 , por Desconhecido - | 1 Pessoa seguindo este artigo.
Visualizado 109 vezes

Não sei se já foi discutido aqui no forum, procurei e não localizei.

Gostaria de saber como obrigar o usuário a digitar somente em caixa alta em todo o formulário.

Autor: alessandro santos


99 comentários

  • 51b06d6eae66e2cfdfc361d418eea715?only path=false&size=50&d=404Luis Eugênio barbosa(usuário não autenticado)
    5 de Setembro de 2012, 0:19

     

    Alessandro,

    isto voce pode resolver de várias formas, uma delas e adicionar o evento onChange e Keyup em todos os inputs para converter para caixa alta o valor do campo. Para fazer isso com o jquery faça assim: adicione o evento init() ao formulário: $frm->addJavascript('init()'); e no final do form crie a função init() em javascript:

     function init()
    {
        jQuery("input" ).each( function()
        {
            var type     = this.type;
            if (type == 'text' || type == 'password' || tag == 'textarea')
            {
                jQuery(this).keyup(function() {
                      this.value = this.value.toUpperCase();
                });    
                jQuery(this).change(function() {
                      this.value = this.value.toUpperCase();
                });    
            }
        });
    }
    Abraço.

    • 831560e81f34c4fcc1402da438e1dd26?only path=false&size=50&d=404alessandro santos(usuário não autenticado)
      10 de Novembro de 2012, 17:03

       

      Luis me desculpe mas não consegui fazer funcionar desta forma. A solução que encontrei foi colocando a função "strtoupper" lá na classe VO, portanto funciona somente no evento clique do botão salvar.

      Gostaria que a solução fosse conforme o usuário ia digitando no campo.

      Há também aproveitando gostaria que esta função além de escrever em caixa alta também retirasse os acentos. 

      • 51b06d6eae66e2cfdfc361d418eea715?only path=false&size=50&d=404Luis Eugênio barbosa(usuário não autenticado)
        10 de Novembro de 2012, 20:06

         

        Alessando,

        você colocou no formulário a chamada para a função init() ?

        Ex: $frm->addJavascript('init()');

        Abraço.

        • 831560e81f34c4fcc1402da438e1dd26?only path=false&size=50&d=404alessandro santos(usuário não autenticado)
          12 de Novembro de 2012, 9:28

           

          Luis Eugenio,

          Coloquei sim, e o script no final da tag do php e não teve efeito nenhum.

          Há, para testar coloquei um "alert('ok')" antes dos procedimentos do script que vc me passou só para saber se a função estava sendo executada ao iniciar o formulário, tive a confirmação que estava realmente passando pela função mas só isso, mas a caixa alta não funcionou.

          • Bfad1e926a8f3039e7359a6c3c876de2?only path=false&size=50&d=404Everton Murilo Rodrigues Silva(usuário não autenticado)
            12 de Novembro de 2012, 14:39

             

            Alessandro, fiz aqui há pouco e o meu funcionou normalmente...

             A única diferença é que deixei o teste somente para campos do tipo text...

            jQuery("input" ).each( function()
                {
                    var type     = this.type;
                    if (type == 'text')
                    {
                        jQuery(this).keyup(function() {
                              this.value = this.value.toUpperCase();
                        });   
                        jQuery(this).change(function() {
                              this.value = this.value.toUpperCase();
                        });   
                    }

            • 831560e81f34c4fcc1402da438e1dd26?only path=false&size=50&d=404alessandro santos(usuário não autenticado)
              12 de Novembro de 2012, 15:55

               

              Everton Murilo,

              Desse jeito que vc me passou realmente funcionou perfeitamente, agora vou tentar implementar a retirada de acentos ao digitar.

              Se tiver alguma idéia serei grato.

              Obrigado.

              • Bfad1e926a8f3039e7359a6c3c876de2?only path=false&size=50&d=404Everton Murilo Rodrigues Silva(usuário não autenticado)
                12 de Novembro de 2012, 16:17

                 

                Alessandro,

                Eu faço assim

                if (type == 'text')
                        {
                            jQuery(this).keyup(function() {
                                  this.value = retira_acentos(this.value);
                                  this.value = this.value.toUpperCase();
                            });   
                            jQuery(this).change(function() {
                                  this.value = retira_acentos(this.value);
                                  this.value = this.value.toUpperCase();
                            });   
                        }

                 E nos meus scripts tenho a função

                function retira_acentos(palavra) {
                var com_acento = 'áàãâäéèêëíìîïóòõôöúùûüçÁÀÃÂÄÉÈÊËÍÌÎÏÓÒÕÖÔÚÙÛÜÇ';
                var sem_acento = 'aaaaaeeeeiiiiooooouuuucAAAAAEEEEIIIIOOOOOUUUUC';
                var nova='';
                for(i=0;i<palavra.length;i++) {
                    if (com_acento.search(palavra.substr(i,1))>=0) {
                        nova+=sem_acento.substr(com_acento.search(palavra.substr(i,1)),1);
                    }
                    else {
                        nova+=palavra.substr(i,1);
                    }
                }
                return nova;
                }

                 

                • 831560e81f34c4fcc1402da438e1dd26?only path=false&size=50&d=404alessandro santos(usuário não autenticado)
                  14 de Novembro de 2012, 15:06

                   

                  Obrigado, Everton

                  Sua solução funcionou nos teste mas no sistema que estou desenvolvendo não sei porque não sutiu efeito, mas já resolvi de outra forma cito:

                  // Para Caixa alta

                  $frm->addTextField('nome','Nome de usuário:',45,true,80)->setCss('text-transform', 'uppercase');

                  achei até mais eficaz porque posso direcionar somente aos campos que quero, caso tenha um campo email não seria viável a utilização.

                  // Para retirar os acentos

                   criei a seguint função php

                      function remover($str, $enc = "UTF-8")
                      {
                      $acentos = array(
                      'A' => '/&Agrave;|&Aacute;|&Acirc;|&Atilde;|&Auml;|&Aring;/',
                      'a' => '/&agrave;|&aacute;|&acirc;|&atilde;|&auml;|&aring;/',
                      'C' => '/&Ccedil;/',
                      'c' => '/&ccedil;/',
                      'E' => '/&Egrave;|&Eacute;|&Ecirc;|&Euml;/',
                      'e' => '/&egrave;|&eacute;|&ecirc;|&euml;/',
                      'I' => '/&Igrave;|&Iacute;|&Icirc;|&Iuml;/',
                      'i' => '/&igrave;|&iacute;|&icirc;|&iuml;/',
                      'N' => '/&Ntilde;/',
                      'n' => '/&ntilde;/',
                      'O' => '/&Ograve;|&Oacute;|&Ocirc;|&Otilde;|&Ouml;/',
                      'o' => '/&ograve;|&oacute;|&ocirc;|&otilde;|&ouml;/',
                      'U' => '/&Ugrave;|&Uacute;|&Ucirc;|&Uuml;/',
                      'u' => '/&ugrave;|&uacute;|&ucirc;|&uuml;/',
                      'Y' => '/&Yacute;/',
                      'y' => '/&yacute;|&yuml;/',
                      'a.' => '/&ordf;/',
                      'o.' => '/&ordm;/');
                     
                      return preg_replace($acentos,
                      array_keys($acentos),
                      htmlentities($str,ENT_NOQUOTES, $enc));
                      }

                  A chamada da função é feita no inicio do arquivo VO da pasta DAO ela é executada somente ao gravar os dados no banco de dados

                  include('lib\funcao.php');

                  e chamado na função set

                      function setNome( $strNewValue = null )
                      {
                          $strNewValue = remover($strNewValue);
                          $this->nome = strtoupper($strNewValue);
                      }

                  Com isso resolvi o meu problema.

Essa comunidade não possui posts nesse blog