Boa noite pessoal,
Bom, como me ajudaram a resolver o problema que eu tinha em relação a JS no web2py (Valeu Vinícius e Relsi!!!) e estamos em uma comunidade Open Source, tentarei retribuir de alguma forma.
Eu precisa usar um JavaScript para, ao digitar o CEP, trazer automaticamente o Endereço, Bairro, Cidade e Estado.
Vou compartilhar aqui como fiz. Por favor, sou totalmente novato e caso alguém queira melhor o código, fique a vontade!
1-Criei um model:
db.define_table('t_fornecedores',
Field('f_nome', type='string',label=T('Nome'), requires=IS_NOT_EMPTY()),
Field('f_fantasia', type='string',label=T('Nome Fantasia'), requires=IS_NOT_EMPTY()),
Field('f_cep', type='string',label=T('Cep'), requires=IS_CEP()),
Field('f_endereco', type='string',label=T('Endereco')),
Field('f_numero', type='integer',label=T('Numero')),
Field('f_complemento', type='string',label=T('Complemento')),
Field('f_bairro', type='string',label=T('Bairro')),
Field('f_cidade', type='string',label=T('Cidade')),
Field('f_estado', type='string',label=T('Estado'),default='SP'),
Field('f_email', type='string',label=T('Email')),
Field('f_cnpj', type='string',label=T('Cnpj/Cpf'),unique=True,comment='Cadastro de CNPJ ou CPF'),
Field('f_telefone', type='string',label=T('Telefone')),
Field('f_banco', type='string',label=T('Banco')),
Field('f_agencia', type='string',label=T('Agencia')),
Field('f_conta', type='string',label=T('Conta')),
auth.signature,format='%(f_nome)s', migrate=settings.migrate)
2- Crie o Controller:
def fornecedores_manage():
form = SQLFORM.grid(db.t_fornecedores,
fields=[db.t_fornecedores.f_nome,
db.t_fornecedores.f_endereco,
db.t_fornecedores.f_numero,
db.t_fornecedores.f_complemento,
db.t_fornecedores.f_cidade,
db.t_fornecedores.f_estado,
db.t_fornecedores.f_email,
db.t_fornecedores.f_telefone],
return locals()
3- Criei a View:
{{extend 'layout.html'}}
<h2>Cadastro de fornecedores</h2><p>{{=form}}</p>
<script type="text/javascript">
function getEndereco() {
// Se o campo CEP não estiver vazio
if($.trim($("#t_fornecedores_f_cep").val()) != ""){
$.getScript("
http://cep.republicavirtual.com.br/web_cep.php?formato=javascript&cep="+$("#t_fornecedores_f_cep").val(), function(){
//Se o resultado for igual a 1
if (resultadoCEP["tipo_logradouro"] != '') {
if (resultadoCEP["resultado"]) {
// troca o valor dos elementos
$("#t_fornecedores_f_endereco").val(unescape(resultadoCEP["tipo_logradouro"]) + " " + unescape(resultadoCEP["logradouro"]));
$("#t_fornecedores_f_bairro").val(unescape(resultadoCEP["bairro"]));
$("#t_fornecedores_f_cidade").val(unescape(resultadoCEP["cidade"]));
$("#t_fornecedores_f_estado").val(unescape(resultadoCEP["uf"]));
$("#t_fornecedores_f_numero").focus();
}
}
});
}
}
</script>
<script type="text/javascript">
$(function(){
$("#t_fornecedores_f_cep").blur(function(){
getEndereco();
});
})
</script>
Valeu pessoal!