Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

adavis

problema com script que cuztomiza input file

Recommended Posts

Olá, boa tarde.

Estou com um problema e não estou atinando para resolver. Gostaria da ajuda de vcs se possível.

Tenho um formulário com um campo input file, ao qual foi estilizado para mudar sua aparência com jquery e css. Até tudo bem, funcionando normalmente. Neste formulário fiz as validações com o jquery validade.

Os demais campos do formulário(input, select, textarea) a validação funciona direitinho (dá a mensagem de erro e os campos ficam com a borda vermelha) porém no input file a validação funciona até, mas o css não pega nele, não muda a cor da borda. Já verifiquei o css está tudo normal. Acredito que seja alguma alteração que tenha que fazer no script mas não estou conseguindo.

Alguém saberia me informar??

Obrigada desde já.

segue a baixo o código do script que "customiza" o input file.

<script type="text/javascript">
;(function( $ ) {
 
 // Browser supports HTML5 multiple file?
 var multipleSupport = typeof $('<input/>')[0].multiple !== 'undefined',
     isIE = /msie/i.test( navigator.userAgent );
 
 $.fn.customFile = function() {
 
   return this.each(function() {
 
     var $file = $(this).addClass('customfile'), // the original file input
         $wrap = $('<div class="customfile-wrap">'),
         $input = $('<input type="text" class="customfile-filename" />'),
         // Button that will be used in non-IE browsers
         $button = $('<button type="button" class="customfile-upload">Selecionar</button>'),
         // Hack for IE
         $label = $('<label class="customfile-upload" for="'+ $file[0].id +'">Selecionar</label>');
 
     // Hide by shifting to the left so we
     // can still trigger events
     $file.css({
       position: 'absolute',
       left: '-9999px'
     });
 
 
     $wrap.insertAfter( $file )
       .append( $file, $input, ( isIE ? $label : $button ) );
 
     // Prevent focus
     $file.attr('tabIndex', -1);
     $button.attr('tabIndex', -1);
 
     $button.click(function () {
       $file.focus().click(); // Open dialog
     });
 
     $file.change(function() {
 
       var files = [], fileArr, filename;
 
       // If multiple is supported then extract
       // all filenames from the file array
       if ( multipleSupport ) {
         fileArr = $file[0].files;
         for ( var i = 0, len = fileArr.length; i < len; i++ ) {
           files.push( fileArr[i].name );
         }
         filename = files.join(', ');
 
       // If not supported then just take the value
       // and remove the path to just show the filename
       } else {
         filename = $file.val().split('\\').pop();
       }
 
       $input.val( filename ) // Set the value
         .attr('title', filename) // Show filename in title tootlip
         .focus(); // Regain focus
 
     });
 
     $input.on({
       blur: function() { $file.trigger('blur'); },
       keydown: function( e ) {
         if ( e.which === 13 ) { // Enter
           if ( !isIE ) { $file.trigger('click'); }
         } else if ( e.which === 8 || e.which === 46 ) { // Backspace & Del
           // On some browsers the value is read-only
           // with this trick we remove the old input and add
           // a clean clone with all the original events attached
           $file.replaceWith( $file = $file.clone( true ) );
           $file.trigger('change');
           $input.val('');
         } else if ( e.which === 9 ){ // TAB
           return;
         } else { // All other keys
           return false;
         }
       }
     });
 
   });
 
 };
 
 // Old browser fallback
 if ( !multipleSupport ) {
   $( document ).on('change', 'input.customfile', function() {
 
     var $this = $(this),
         // Create a unique ID so we
         // can attach the label to the input
         uniqId = 'customfile_'+ (new Date()).getTime(),
         $wrap = $this.parent(),
 
         // Filter empty input
         $inputs = $wrap.siblings().find('.customfile-filename')
           .filter(function(){ return !this.value }),
 
         $file = $('<input type="file" id="'+ uniqId +'" name="'+ $this.attr('name') +'"/>');
 
     // 1ms timeout so it runs after all other events
     // that modify the value have triggered
     setTimeout(function() {
       // Add a new input
       if ( $this.val() ) {
         // Check for empty fields to prevent
         // creating new inputs when changing files
         if ( !$inputs.length ) {
           $wrap.after( $file );
           $file.customFile();
         }
       // Remove and reorganize inputs
       } else {
         $inputs.parent().remove();
         // Move the input so it's always last on the list
         $wrap.appendTo( $wrap.parent() );
         $wrap.find('input').focus();
       }
     }, 1);
 
   });
 }
 
}( jQuery ));
 
$('input[type=file]').customFile();
</script>
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Thiago Duarte
      Oi, gostaria de arrastar imagem e ao soltar formar bloco html, meu bloco de html ficaria com nome, content-1.html, content-2.html, etc
       
      Alguem pode me ajudar?
    • Por juliosonic
      Boa noite..
      Estou desenvolvendo um site de https://www.maithunatantra.com.br/ e estou com um duvida sobre o menu de navegação da versão mobile.
      O menu que tem o dropdown "Terapeutas" e "Terapias" quando clico em cima ele expande como deve ser, mas quando clico denovo para recolher os submenus
      nao acontece nada.. segue o trecho do codigo do menu..
      <div class="collapse navbar-collapse" id="navbarsExample09">             <ul class="navbar-nav ml-auto">               <li class="nav-item  active"><a class="nav-link" href="index.html">Home</a></li>               <li class="nav-item  active"><a class="nav-link" href="about-us.html">Quem Somos</a></li>               <li class="nav-item dropdown1">                     <a class="nav-link dropdown-toggle" data-toggle="dropdown1" href="#">Terapeutas</a>                     <ul class="dropdown-menu">                         <li><a class="dropdown-item" href="terapeuta-julio-cezar.html">Julio Cezar</a></li>                         <li><a class="dropdown-item" href="terapeuta-pamela-priscila.html">Pamela Priscila</a></li>                     </ul>                                    </li>               <li class="nav-item dropdown">                     <a class="nav-link dropdown-toggle" data-toggle="dropdown1" href="#">Terapias</a>                     <ul class="dropdown-menu" aria-labelledby="dropdown01">                         <li><a class="dropdown-item" href="o-que-e-reiki.html">O que é Reiki</a></li>                         <li><a class="dropdown-item" href="beneficios-reiki.html">Benefícios do Reiki</a></li>                         <li><a class="dropdown-item" href="principios-reiki.html">Princípios do Reiki</a></li>                         <li><a class="dropdown-item" href="animais-reiki.html">Reiki em Animais</a></li>                         <li><a class="dropdown-item" href="animais-reiki.html">Estudos Sobre Reiki</a></li>                         <li><a class="dropdown-item" href="terapia-massagem-tantrica.html">Terapia Tântrica</a></li>                     </ul>               </li>               <li class="nav-item  active"><a class="nav-link" href="blog.html">Blog</a></li>                <li class="nav-item"><a class="nav-link" href="contato.html">Contato</a></li>             </ul>         </div>  
      Massagem Tantrica em Curitiba
      Tantra Curitiba
      Massagem Tântrica
      Tantra
      Julio Darshan

      Obrigado
      Att
      Julio Cezar
       
       
       
    • Por Felipe Medeiros
      Bom, criei um tema filho e o que aprendi é que para alterar qualquer coisa do tema filho eu preciso copiar o arquivo do tema pai o colocar dentro da pasta do tema filho.
       
      No meu caso, estou usando o tema "Astra" bem famosinho. O arquivo css que quero modificar não está dentro da pasta do tema pai, está em "wp-content/uploads/uag-plugin/assets/0/uag-css-10.css" sendo que o diretorio do tema pai é "wp-content/themes/Astra"
       
      O problema é o seguinte, preciso modificar a barra de pesquisa da pagina inicial, porem o inspetor de elementos do chrome ta acusando que esse arquivo é o responsavel por estilizar a barra de pesquisa. Será que isso tem a ver com "Cache de objetos", eu sei que o plugin liteSpeed Cache, AMP, Rank Math, todos eles tem essas paradas de criar arquivos css e js para tornar o site mais rapido.
    • Por ILR master
      Salve galera.
       
      Vou publicar um evento e quero colocar um Cronômetro regressivo que mostre em tempo real os dias, horas e minutos que faltam para determinada data, tipo:.
      Faltam 5 dias, 12:30:00 para inauguração.
       
      Qdo chegar no dia, quero que apenas apareça uma mensagem.
       
      Alguém pode me ajudar?
    • Por Alessandro Bodão
      Fala galerinha, 
       
      Tenho um container com um título (h1) no cabeçalho do meu site, esse container ocupa metade da tela (50vw), e eu gostaria que esse título ocupasse toda a largura desse container, independente do seu tamanho ou do tamanho do monitor, de forma com que a palavra tenha exactamente o mesmo tamanho do container (vou anexar uma foto de exemplo). Já tentei todos os valores pra essa h1, como % e vw... mas nada parece fazer sentido.
       
       

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.