$.validator.addMethod(
"date",
function(value, element) {
var check = false;
var re = /^\d{1,2}\/\d{1,2}\/\d{4}$/;
if( re.test(value)){
var adata = value.split('/');
var gg = parseInt(adata[0],10);
var mm = parseInt(adata[1],10);
var aaaa = parseInt(adata[2],10);
var xdata = new Date(aaaa,mm-1,gg);
if ( ( xdata.getFullYear() == aaaa ) && ( xdata.getMonth () == mm - 1 ) && ( xdata.getDate() == gg ) )
check = true;
else
check = false;
} else
check = false;
return this.optional(element) || check;
},
"Insira uma data válida"
);
terça-feira, 17 de setembro de 2013
Validando datas em pt-br com jQuery Validate
assim:
sexta-feira, 16 de agosto de 2013
Escrevendo a data e hora atuais do servidor
Mexer com datas e php parece ser uma arte, algo que poucos dominam.
Eu, por exemplo, não sou um deles. Mas eu vou tentando.
Primeiro, precisamos setar o locale do servidor para nosso querido idioma:
Se o servidor for windows, só pra variar, tem que ser de um jeito diferente:
Depois, usamos strftime pra escrever a data atual.
O resultado fica:
sexta-feira, 16 de agosto de 2013, 15:02
Eu, por exemplo, não sou um deles. Mas eu vou tentando.
Primeiro, precisamos setar o locale do servidor para nosso querido idioma:
setlocale(LC_ALL, 'pt_BR.utf8');
Se o servidor for windows, só pra variar, tem que ser de um jeito diferente:
setlocale(LC_ALL, 'ptb');
Depois, usamos strftime pra escrever a data atual.
echo strftime('%A, %d de %B de %Y, %H:%M');
O resultado fica:
sexta-feira, 16 de agosto de 2013, 15:02
segunda-feira, 15 de julho de 2013
Ou algo assim
Como todo mundo sabe, uma caipirinha se faz misturando limão, cachaça e gelo.
Se trocar a cachaça por vodca, a bebida muda pra 'caipiroska'.
Mas não deveria ser 'caipivodca'? Digo, de onde surgiu a 'roska'?
Talvez se a bebida fosse inventada pelo Paulinho Moska, poderia ser CaipiMoska, o que seria mais próximo de 'caipiroska' (e mais nojento também).
Se misturar saquê, fica 'caipisaquê'. Ou seja, qualquer porcaria que se misturar com limão e gelo, vira 'caipi'+algumacoisa. Logo, pepsi com limão seria 'caipsi', e com coca-cola, 'caipicoca' (ou 'caipicola').
Ou algo assim.
Se trocar a cachaça por vodca, a bebida muda pra 'caipiroska'.
Mas não deveria ser 'caipivodca'? Digo, de onde surgiu a 'roska'?
Talvez se a bebida fosse inventada pelo Paulinho Moska, poderia ser CaipiMoska, o que seria mais próximo de 'caipiroska' (e mais nojento também).
Se misturar saquê, fica 'caipisaquê'. Ou seja, qualquer porcaria que se misturar com limão e gelo, vira 'caipi'+algumacoisa. Logo, pepsi com limão seria 'caipsi', e com coca-cola, 'caipicoca' (ou 'caipicola').
Ou algo assim.
sexta-feira, 21 de junho de 2013
Setando cabeçalhos no Apache
Às vezes, o Internet Explorer decide ignorar os cookies em iframes.
Pra resolver isso, normalmente a gente seta os cabeçalhos p3p no php, assim:
Mas pra isso funcionar, o arquivo com esse comando deveria ser chamado em todo o sistema, o que em sistemas macarrônicos dificilmente acontece.
Nesse caso, usamos o .htaccess do Apache, na pasta mais acima que puder:
A resposta, para todas requisições abaixo da pasta que estiver o arquivo, sai assim:
Podemos, inclusive, setar nossos próprios cabeçalhos, pra, seilá, servir como um amuleto de boa sorte:
Pra resolver isso, normalmente a gente seta os cabeçalhos p3p no php, assim:
header('p3p: CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"');
Mas pra isso funcionar, o arquivo com esse comando deveria ser chamado em todo o sistema, o que em sistemas macarrônicos dificilmente acontece.
Nesse caso, usamos o .htaccess do Apache, na pasta mais acima que puder:
Header set p3p 'CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"'
A resposta, para todas requisições abaixo da pasta que estiver o arquivo, sai assim:
p3p:CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"
Podemos, inclusive, setar nossos próprios cabeçalhos, pra, seilá, servir como um amuleto de boa sorte:
SecretNumbers:4, 8, 15, 16, 23 42
quarta-feira, 12 de junho de 2013
Trocando obrigatoriedade de campo com jQuery Validate
Temos um campo obrigatório e, ao lado dele, um checkbox que, se estiver marcado, faz com que o campo não seja obrigatório.
A regra fica assim:
A regra fica assim:
$("#form_cadastro").validate({
rules: {
senha: {
minlength:8
},
repetir_senha: {
equalTo: "#senha"
},
campo_obrigatorio: {
required: function(element) {
return $('#campo_checkbox:checked').length < 1
}
}
}
});
terça-feira, 28 de maio de 2013
Verificando se um e-mail existe
1 - Aprender o básico de inglês (pelo menos o técnico)
2 - http://www.webdigi.co.uk/blog/2009/how-to-check-if-an-email-address-exists-without-sending-an-email/
Fonte: http://www.webdigi.co.uk/blog/2009/how-to-check-if-an-email-address-exists-without-sending-an-email/
2 - http://www.webdigi.co.uk/blog/2009/how-to-check-if-an-email-address-exists-without-sending-an-email/
Fonte: http://www.webdigi.co.uk/blog/2009/how-to-check-if-an-email-address-exists-without-sending-an-email/
terça-feira, 21 de maio de 2013
Time is never on my side
Pegando uma data do banco, adicionando dias e retornando ela formatada:
Não sei quem inventou que as datas tem que ser escritas com o ano na frente.
Acho que isso só faz sentido se o programador acabou de acordar de um coma de seilá, 5 anos, e a primeira coisa que ele fez foi consultar a hora no servidor usando a função NOW().
$vcto = new DateTime($item['data']); //$vcto->modify('+1 month'); //período de tempo para adicionar echo $vcto->format('d/m/Y'); //escrevendo a data no formato d/m/Y$item['data'] contém uma data no formato YYYY-MM-DD HH:mm:ss
Não sei quem inventou que as datas tem que ser escritas com o ano na frente.
Acho que isso só faz sentido se o programador acabou de acordar de um coma de seilá, 5 anos, e a primeira coisa que ele fez foi consultar a hora no servidor usando a função NOW().
sexta-feira, 17 de maio de 2013
Dois jquery em um
Eu sempre esqueço como se utiliza a função append() do jQuery várias vezes seguidas, então lá vai:
Outra coisa, é quando se cria um formulário de troca de senha.
Por padrão, o Chrome vai preencher o campo da senha automaticamente, mas nem sempre ele vai preencher o campo de repetir a senha.
Aí, pra não encher o saco do usuário, que teria que digitar a senha no campo de repetir-senha, a gente coloca um valor qualquer no campo de senha e no de repetir-senha:
Depois, com jQuery, a gente limpa o value desses campos. O detalhe é que não funciona se simplesmente fizer assim:
Precisa dar um tempo após o evento ready, senão o Chrome vai perceber e o negócio não vai funcionar. Então, precisa usar o setTimeout, para dar um atraso na execução:
$('#senha')
.append(
$('<li>').addClass('item')
.append(
$('<input>').attr({type:'password',name:'senha',id:'senha'})
)
.append(
$('<label>').text('(preencha somente se quiser trocar)').addClass('obs')
)
)
Outra coisa, é quando se cria um formulário de troca de senha.
Por padrão, o Chrome vai preencher o campo da senha automaticamente, mas nem sempre ele vai preencher o campo de repetir a senha.
Aí, pra não encher o saco do usuário, que teria que digitar a senha no campo de repetir-senha, a gente coloca um valor qualquer no campo de senha e no de repetir-senha:
<input type="password" name="senha" id="senha" class="" value="$password" />
<input type="password" name="repetir_senha" id="repetir_senha" class="" value="$password" />
Depois, com jQuery, a gente limpa o value desses campos. O detalhe é que não funciona se simplesmente fizer assim:
$(document).ready(function(){
$('#senha,#repetir_senha').val('')
})
Precisa dar um tempo após o evento ready, senão o Chrome vai perceber e o negócio não vai funcionar. Então, precisa usar o setTimeout, para dar um atraso na execução:
$(document).ready(function(){
window.setTimeout("$('#senha,#repetir_senha').val('')",100);
})
sábado, 11 de maio de 2013
História do Burrito
Nos tempos da revolução mexicana (1910 - 1921) no bairro da Bella
Vista em Cd. Juarez, Chihuahua, México, havia um senhor de nome Juan
Mendez que tinha uma barraquinha de comida típica mexicana perto do Rio
Bravo. Esse rio separa a fronteira do México com os Estados Unidos. Do
lado americano em El Paso, no bairro de Sunset Heights, viviam muitos
mexicanos que haviam fugido da revolução.
Algumas pessoas paravam à beira do Rio
Bravo e conversavam com Juan. Perguntavam sobre as noticias da
“Revolución” e elogiavam a sua comida. O cheiro da comida de Juan era
tão gostoso que conseguia atravessar o longo rio.
Muitos mexicanos, saudosos da comida de
sua terra natal, faziam encomendas a Juan. Para a comida não esfriar,
ele teve a idéia de fazer tortillas de trigo grandes e colocar os
recheios dentro dela (arroz, feijão, carne, etc.). Depois ele as
enrolava em sacolas para mantê-las quentinhas.
Os pedidos eram tantos
que decidiu comprar um burro, pois só assim conseguiria cruzar o Rio
Bravo. As comidas de Juan eram então transportadas nas costas do "burrito".
O sucesso foi tão grande que, com o
tempo, começaram a chegar mexicanos e gringos de todas as partes do
Texas perguntando pela comida do "burrito".
Foi assim que o invento de Juan Mendez
cruzou a fronteira e encantou não somente seus conterrâneos, mas o
mundo.
sexta-feira, 3 de maio de 2013
ParseInt no Firefox
Tive problemas com o comando parseInt no firefox.
Algumas vezes ele não retornava o valor certo, mas sim retornava 0.
Executando isso no console do Firebug, retornou algo estranho:
Retornou isso:
Segundo essse link, isso acontece porque o navegador está retornando esse valor em base 8, e não base 10.
Pra resolver isso, precisamos dizer a ele pra usar base 10:
Que no fim vai retornar:
Algumas vezes ele não retornava o valor certo, mas sim retornava 0.
Executando isso no console do Firebug, retornou algo estranho:
console.log(parseInt('01'));
console.log(parseInt('02'));
console.log(parseInt('03'));
console.log(parseInt('04'));
console.log(parseInt('05'));
console.log(parseInt('06'));
console.log(parseInt('07'));
console.log(parseInt('08'));
console.log(parseInt('09'));
console.log(parseInt('010'));
Retornou isso:
1
2
3
4
5
6
7
0 //não deveria ser 8, 9 e 10?
0
8
Segundo essse link, isso acontece porque o navegador está retornando esse valor em base 8, e não base 10.
Pra resolver isso, precisamos dizer a ele pra usar base 10:
console.log(parseInt('01','10'));
console.log(parseInt('02','10'));
console.log(parseInt('03','10'));
console.log(parseInt('04','10'));
console.log(parseInt('05','10'));
console.log(parseInt('06','10'));
console.log(parseInt('07','10'));
console.log(parseInt('08','10'));
console.log(parseInt('09','10'));
console.log(parseInt('010','10'));
Que no fim vai retornar:
1
2
3
4
5
6
7
8
9
10
sexta-feira, 26 de abril de 2013
quinta-feira, 25 de abril de 2013
Calculando idade com Mysql e Javascript
Não com os dois ao mesmo tempo, obviamente.
Só pra lembrar: nunca defina o campo de data como DATETIME, a menos que tu precise contar quantos anos, dias, horas, minutos e segundos o vivente tem de existência. Se não for o caso, use apenas DATE.
Agora, com javascript:
http://stackoverflow.com/questions/5524743/jquery-age-calculation-on-date
Só pra lembrar: nunca defina o campo de data como DATETIME, a menos que tu precise contar quantos anos, dias, horas, minutos e segundos o vivente tem de existência. Se não for o caso, use apenas DATE.
DATE_FORMAT(FROM_DAYS(TO_DAYS(CURDATE())-TO_DAYS(nascimento)), '%y') AS idade,
Agora, com javascript:
/*
* calcularIdade
* Calcula a idade baseada na data informada
* @param string string texto no formato d/m/Y
*/
function calcularData(string){
var tmp = string.split('/');
var data = new Date(tmp[2], tmp[1], tmp[0]);
var hoje = new Date();
var idade = Math.floor((hoje-data) / (365.25 * 24 * 60 * 60 * 1000));
return idade;
}
Fontes: ma.tt/2003/12/calculate-age-in-mysql/http://stackoverflow.com/questions/5524743/jquery-age-calculation-on-date
terça-feira, 23 de abril de 2013
quinta-feira, 28 de março de 2013
quarta-feira, 27 de março de 2013
Gerando documentação para funções no Netbeans
Basta colocar este bloco de comentários antes da definição da função:
Fica assim:
E, no Netbeans, aparece assim:
1: /**
2: * contarDiffHoras
3: *
4: * conta a diferença em horas entre a data informada e a data do sistema
5: * obs: sempre uma data no passado
6: *
7: * @param string $data a data para comparar no formato d/m/Y H:i
8: */
Fica assim:
1: /**
2: * contarDiffHoras
3: *
4: * conta a diferença em horas entre a data informada e a data do sistema
5: * obs: sempre uma data no passado
6: *
7: * @param string $data a data para comparar no formato d/m/Y H:i
8: */
9: function contarDiffHoras($data){
10: $data = date_create_from_format('d/m/Y H:i', $data);//data informada
11: $now = date_create();//data atual
12: $diff = date_diff($now, $data);//calcula a diferença entre as datas
13: return ($diff->format('%a') * 24) + $diff->format('%H');//calcula a diferença em horas
14: }
E, no Netbeans, aparece assim:
quinta-feira, 7 de março de 2013
Judgement of Heaven
If you could live your life again
Would you change a thing
Or leave it all the same?
If you had the chance again
Would you change a thing at all?
When you look back at your past
Can you say that you are proud
Of what you've done?
Are there times when you believe
That the right you thought was wrong?
Would you change a thing
Or leave it all the same?
If you had the chance again
Would you change a thing at all?
When you look back at your past
Can you say that you are proud
Of what you've done?
Are there times when you believe
That the right you thought was wrong?
quarta-feira, 27 de fevereiro de 2013
Garbellini Wars
Durante a vida, a gente comete alguns erros. Faz algumas burrices. E comete outras tantas cagadas.
Esta é uma delas.
No dia 03 de dezembro de 2011, sábado, eu e minha namorada comparecemos à filial da Av. Itaquera da loja Garbellini Planejados para fazer um projeto de móveis planejados. No dia, fechamos um projeto no valor de R$17.280, que seria parcelado em 36X. A forma de pagamento acertada foi em cheques. Como no dia não estávamos com o talão de cheques, ficou acordado que os levaríamos no dia seguinte, domingo, ou mandaríamos entregar, já devidamente assinados.
No dia seguinte, ligamos na loja para solicitar o cancelamento do projeto, pois como estávamos perto da data da nossa mudança, pensamos que seria melhor adiar o projeto, pois teríamos muitos gastos com essa mudança. Ligamos perto do meio dia e falamos com o vendedor que nos atendeu, Vagner Nunes. O mesmo repassou o caso para o seu supervisor, um tal de Valdir. Ele disse que iria ver a possibilidade de fazer um ‘plano flex’ para facilitar as condições de pagamento, mas que precisava ver com o seu superior, e iria retornar a ligação no dia seguinte, mas que independente disso o projeto havia sido cancelado. Vale observar que faziam menos de 24 horas que o contrato havia sido assinado e, em uma das cláusulas do mesmo, constava um período de até 24 horas para solicitar o cancelamento do projeto sem que fosse necessário pagar multa.
No meio da semana, entre terça e quarta, recebemos uma ligação da Garbellini, onde nos informaram que o financiamento havia sido aceito pela Aymoré e perguntaram qual era o melhor dia para o vencimento das parcelas. Ficamos surpresos, pois além de termos solicitado o cancelamento, estávamos aguardando a proposta que o Valdir havia mencionado. Falei isso para a pessoa que me ligou, e pedi para falar com o Valdir. Após tentar ligar várias vezes e nunca o encontrar na loja, finalmente consegui falar com ele, e solicitei novamente o cancelamento. O mesmo me disse que havia acontecido algum engano, que havia feito uma observação no nosso projeto e que não deveria ter sido passado para a financiadora, e que não nos preocupássemos, pois ele iria resolver. “Deixa comigo” foram as palavras dele.
No dia 26 de dezembro, recebemos o carnê com as 36 parcelas para fazer os pagamentos, iniciando em fevereiro de 2012. Ficamos ainda mais surpresos, pois haviam nos garantido que era um engano, que o projeto havia sido cancelado. Também achamos estranho não termos recebido nenhum contato da Aymoré para confirmar que eu realmente havia feito um financiamento, ainda mais se tratando de um valor alto. Tentei novamente contato com a loja, mas como era final de ano, ninguém nos atendeu, então mandei um e-mail para o vendedor Vagner perguntando o que havia acontecido e o que deveria fazer.
Após isso, tentei contato telefônico, enviei e-mails, mas o Valdir nunca se encontrava na loja e nunca respondia os e-mails. No dia 19 de janeiro decidimos ir até a loja para falar pessoalmente com ele, mas o mesmo não se encontrava lá. Esperamos durante algumas horas, pois nos disseram que ele voltaria, mas nada de aparecer. Já estávamos impacientes com isso, então o vendedor Vagner nos propôs uma alteração no projeto inicial, para que não cancelássemos, e para que não esperássemos mais o Valdir, pois já não tinha mais certeza de que ele voltaria naquele dia.
Refizemos parte do projeto, diminuindo seu valor para R$11.040,00. Para que não fosse necessário enviar novamente para a financeira, ficou acordado que a loja pagaria as primeiras 13 parcelas, e nós as demais. Esse acordo foi aceito por nós porque eles se recusaram a cancelar e nós não queríamos ficar com pendências financeiras. O acordo foi feito e assinado pelo vendedor Vagner, que refez o pedido. À nosso pedido, ele colocou a observação que a loja ficaria responsável pelas parcelas e assinou. Eles também destacaram as primeiras 13 folhas do carnê para pagar mensalmente conforme acordado.
Após a data do vencimento da primeira parcela, a Aymoré entrou em contato conosco e assim descobrimos que o pagamento não havia sido feito, conforme o acordo. Entramos em contato com o Vagner que providenciou o pagamento das duas primeiras parcelas. Após o vencimento da terceira parcela, a Aymoré nos contatou novamente para cobrar a parcela em atraso. Tentamos entrar em contato novamente com o Vagner, mas o mesmo nos respondeu por e-mail que havia saído da empresa. Entramos em contato com o responsável pela loja através do e-mail garbelliniplanejados@hotmail.com e fomos respondidos por um tal de Cláudio Garbellini. O mesmo respondeu que iria verificar com o financeiro da loja e que faria o pagamento. Como o pagamento não foi feito, continuei tentando ligar e mandar e-mails, mas nunca era respondido. Após alguns dias, através de um e-mail que recebi do Vagner, soube que a loja havia fechado, e assim não consegui contato com mais ninguém.
No fim disso tudo, fiquei com uma dívida com a Aymoré e nunca soube se os meus móveis sequer haviam sido fabricados.
Esta é uma delas.
No dia 03 de dezembro de 2011, sábado, eu e minha namorada comparecemos à filial da Av. Itaquera da loja Garbellini Planejados para fazer um projeto de móveis planejados. No dia, fechamos um projeto no valor de R$17.280, que seria parcelado em 36X. A forma de pagamento acertada foi em cheques. Como no dia não estávamos com o talão de cheques, ficou acordado que os levaríamos no dia seguinte, domingo, ou mandaríamos entregar, já devidamente assinados.
No dia seguinte, ligamos na loja para solicitar o cancelamento do projeto, pois como estávamos perto da data da nossa mudança, pensamos que seria melhor adiar o projeto, pois teríamos muitos gastos com essa mudança. Ligamos perto do meio dia e falamos com o vendedor que nos atendeu, Vagner Nunes. O mesmo repassou o caso para o seu supervisor, um tal de Valdir. Ele disse que iria ver a possibilidade de fazer um ‘plano flex’ para facilitar as condições de pagamento, mas que precisava ver com o seu superior, e iria retornar a ligação no dia seguinte, mas que independente disso o projeto havia sido cancelado. Vale observar que faziam menos de 24 horas que o contrato havia sido assinado e, em uma das cláusulas do mesmo, constava um período de até 24 horas para solicitar o cancelamento do projeto sem que fosse necessário pagar multa.
No meio da semana, entre terça e quarta, recebemos uma ligação da Garbellini, onde nos informaram que o financiamento havia sido aceito pela Aymoré e perguntaram qual era o melhor dia para o vencimento das parcelas. Ficamos surpresos, pois além de termos solicitado o cancelamento, estávamos aguardando a proposta que o Valdir havia mencionado. Falei isso para a pessoa que me ligou, e pedi para falar com o Valdir. Após tentar ligar várias vezes e nunca o encontrar na loja, finalmente consegui falar com ele, e solicitei novamente o cancelamento. O mesmo me disse que havia acontecido algum engano, que havia feito uma observação no nosso projeto e que não deveria ter sido passado para a financiadora, e que não nos preocupássemos, pois ele iria resolver. “Deixa comigo” foram as palavras dele.
No dia 26 de dezembro, recebemos o carnê com as 36 parcelas para fazer os pagamentos, iniciando em fevereiro de 2012. Ficamos ainda mais surpresos, pois haviam nos garantido que era um engano, que o projeto havia sido cancelado. Também achamos estranho não termos recebido nenhum contato da Aymoré para confirmar que eu realmente havia feito um financiamento, ainda mais se tratando de um valor alto. Tentei novamente contato com a loja, mas como era final de ano, ninguém nos atendeu, então mandei um e-mail para o vendedor Vagner perguntando o que havia acontecido e o que deveria fazer.
Após isso, tentei contato telefônico, enviei e-mails, mas o Valdir nunca se encontrava na loja e nunca respondia os e-mails. No dia 19 de janeiro decidimos ir até a loja para falar pessoalmente com ele, mas o mesmo não se encontrava lá. Esperamos durante algumas horas, pois nos disseram que ele voltaria, mas nada de aparecer. Já estávamos impacientes com isso, então o vendedor Vagner nos propôs uma alteração no projeto inicial, para que não cancelássemos, e para que não esperássemos mais o Valdir, pois já não tinha mais certeza de que ele voltaria naquele dia.
Refizemos parte do projeto, diminuindo seu valor para R$11.040,00. Para que não fosse necessário enviar novamente para a financeira, ficou acordado que a loja pagaria as primeiras 13 parcelas, e nós as demais. Esse acordo foi aceito por nós porque eles se recusaram a cancelar e nós não queríamos ficar com pendências financeiras. O acordo foi feito e assinado pelo vendedor Vagner, que refez o pedido. À nosso pedido, ele colocou a observação que a loja ficaria responsável pelas parcelas e assinou. Eles também destacaram as primeiras 13 folhas do carnê para pagar mensalmente conforme acordado.
Após a data do vencimento da primeira parcela, a Aymoré entrou em contato conosco e assim descobrimos que o pagamento não havia sido feito, conforme o acordo. Entramos em contato com o Vagner que providenciou o pagamento das duas primeiras parcelas. Após o vencimento da terceira parcela, a Aymoré nos contatou novamente para cobrar a parcela em atraso. Tentamos entrar em contato novamente com o Vagner, mas o mesmo nos respondeu por e-mail que havia saído da empresa. Entramos em contato com o responsável pela loja através do e-mail garbelliniplanejados@hotmail.com e fomos respondidos por um tal de Cláudio Garbellini. O mesmo respondeu que iria verificar com o financeiro da loja e que faria o pagamento. Como o pagamento não foi feito, continuei tentando ligar e mandar e-mails, mas nunca era respondido. Após alguns dias, através de um e-mail que recebi do Vagner, soube que a loja havia fechado, e assim não consegui contato com mais ninguém.
No fim disso tudo, fiquei com uma dívida com a Aymoré e nunca soube se os meus móveis sequer haviam sido fabricados.
quarta-feira, 30 de janeiro de 2013
Argumentos opcionais em Javascript
Ás vezes precisamos alterar uma função que já existe, adicionando mais parâmetros.
Pra não quebrar a compatibilidade com outras partes do sistema que estejam usando a função, e pra não precisar revisar tudo pra encontrar as chamadas à tal função, o jeito é criar os novos parâmetros como opcionais.
Pra não quebrar a compatibilidade com outras partes do sistema que estejam usando a função, e pra não precisar revisar tudo pra encontrar as chamadas à tal função, o jeito é criar os novos parâmetros como opcionais.
function war(enemy,reason) {
if(!enemy) { //The mandatory argument is not present - die with error(no pun intended)
alert("Please choose an enemy before starting a war");
return false;
}
if(!reason) { //If the optional argument is not there, create a new variable with that name.
var reason = "They have Nukes!";
}
/* ...Do what you want with the arguments... */
}
Fonte: http://www.openjs.com/articles/optional_function_arguments.php
quinta-feira, 24 de janeiro de 2013
quarta-feira, 23 de janeiro de 2013
Assinar:
Postagens (Atom)
