Postagens

Mostrando postagens com o rótulo jQuery

6 maneiras de fazer a mesma coisa, o que é considerado boas práticas?

As vezes tem tantas maneiras diferentes de fazer o mesmo código que nós ficamos na dúvida quanto a qual maneira usar. O que seria considerado "boa prática" pela comunidade e o que sua equipe entenderia melhor. Suponhamos que você esteja trabalhando dentro de um método de um Domain Service chamado UmDomainServiceChique(objetoDoDominio) que será chamado por uma API. Você tem uma regra de negócio chique para ser verificada que por enquanto chamarei de VerificaMinhaRegraChiqueComplexa(). Você chama UmDomainServiceChique(objetoDoDominio) e caso VerificaMinhaRegraChiqueComplexa() retorne true você vai querer que UmDomainServiceChique faça o que tem que fazer e a api retornar Ok 200, caso contrário você quer que a API responda um erro qualquer, tipo BadRequest, e retornar uma mensagem dizendo que VerificaMinhaRegraChiqueComplexa deu ruim. Eu vejo 6 maneiras de fazer isso, gostaria de saber a opinião de outrs devs sobre qual seria a maneira menos gambiarr...

Fácil e reutilizável galeria de imagens em Jquery

Imagem
Se você é programador vai achar esse código um tanto quanto é trivial, mas se você for designer, como o cara que me pediu isso, talvez isso seja muito útil pra você. Direto vemos galerias de imagens e hotsites e afins, e hoje é simplesmente ridículo fazer esse tipo de coisa com flash. Flash aos poucos está sendo banido da Internet.  HTML5 e um pouco de jQuery é o que você precisa para fazer uma galeria de imagens onde seja possível escolher a imagem com thumbnails, avançar, voltar e ter exibição automática em ciclo.  Aqui eu corrijo um erro muito comum dessas galerias: se uma nova imagem aparece a cada 5 segundos, e o usuário passou 4 segundos na última imagem, não seria correto trocar a imagem novamente no timeout, um segundo depois. Com a interação do usuário o timer deveria ser resetado.  Crie uma página HTML com o conteúdo abaixo. Você pode trazer o  jquery de um CDN também. Repare nos comentários do código. Uso atributos do tipo data-* e alguma...

Evitar duplo submit com jQuery

No trabalho hoje me deparei com a necessidade de impedir que se façam múltiplos submits em uma página Web. Na empresa onde trabalho não usamos asp.net MVC ou Web Forms, mas sim um framework próprio da empresa, feito sobre asp.net, que lembra muito o asp clássico. Independente do ambiente ou framework, de ser em php, .net etc, se não houver um recurso nativo para evitar isso então você deve se preocupar: lentidão para enviar a página e o usuário com "dedinho nervoso" clicando em enviar mil vezes por segundo, levando a múltiplos posts (submits) e a inserir mútiplos dados idênticos no seu banco de dados. Além do trabalho server-side, de validação, prevenção de duplicidades na camada de persistência, redirect para uma página de sucesso etc, deve haver alguma coisa client-side para prevenir o submit duplo. Com javascript é possível desabilitar o botão no momento do click, e evitar que ele seja pressionado novamente. Se for um Button do tipo AspButton (System.Web.UI.WebCon...

Wildcards nos seletores JQuery

O JQuery pode ser usado com Wildcards / Coringas nos seletores. Queria aplicar uma regra de formatação e validação em todos os campos input onde deveriam ser inseridas datas, no entanto, como é um sistema legado, os elementos html não possuem ID's, ou pelo menos não alguns que eu tenha controle. Também não é possível no meu sistema atual atribuir classes aos elementos sem alterar o software que hera o html. Minha última opção seria confiar nos seletores jQuery e na propriedade name dos inputs. Uma vantagem é que, na minha aplicação, todos os inputs de data tem o prefixo "dt_" no nome. Tudo que eu precisava era de uma forma de selecionar todos os inputs que começavam com "dt_". O jQuery permite seletores por tipo de tag e atributo, então para selecionar inputs seria $("input[atributo='valor']"). No entanto não existe apenas o operador "=". Os operadores possíveis são: *= (contém) $= (termina com) ^= (começa com) Então, para...