AM
Como usar o set focus para deixar o cursor piscando no 1o campo?
Fechado
Como usar o set focus para deixar o cursor piscando no 1o campo?
Eu sei que muita gente já sabe fazer isso, sei que este assunto já está bem mastigado. Uma vez postaram esta dúvida no fórum, eu tentei colocar em prática mas não consegui. Disseram para mexer com configurações e scripts e terminei me perdendo todo.
Se houvesse apenas uma linha feita em framework e que pudesse inserir no form especificando o campo que receberá o fócus, seria muito mais fácil.
Eu sei que muita gente já sabe fazer isso, sei que este assunto já está bem mastigado. Uma vez postaram esta dúvida no fórum, eu tentei colocar em prática mas não consegui. Disseram para mexer com configurações e scripts e terminei me perdendo todo.
Se houvesse apenas uma linha feita em framework e que pudesse inserir no form especificando o campo que receberá o fócus, seria muito mais fácil.
funcaoJs facilmente encontrada na net...
do jeito q vc precisa
Esta sua postagem só me deixou com muitas dúvidas.
1- Você colocou no seu código isto: 'onfocus" Me parece que começa com um apóstrofo e termina com aspas, afinal, é apóstrofo ou aspas? Deve mesmo colocar isto para funcionar?
2- Antes de " funcaoJs() , você colocou aspas, acho que está errado, pois eu inserir no código da minha página e está tudo pintado de rosa, tem algo errado ai.
3- Onde eu coloco esta função? TScript::create , já que se tratas de um script, não deveria ficar dentro do arquivo: app/lib/include/application.js
Estou todo perdido, se vc fosse mais direto, eu agradeceria.
Alex, eu fiz assim no meu: coloque diretamente dentro do "__construct()" do Controller do seu formulário:
Infelizmente deu errado. Eu testei no Navegador Google Chrome, versão: 43.0.2357.130 m
Que navegador você usa?
Estranho... aqui funciona no Chrome e no Firefox.
Bom, esse código é de um sistema que fiz com a versão 1.0.3 do framework, ainda não testei na 2.0, talvez tenha havido alguma mudança na nova versão.
Vou dar uma olhada com calma aqui.
Alex, acho que esqueci de acrescentar uma linha:
Isso aí, sem o
Ainda está dando erro na linha 13, a linha 13 tem isto abaixo:
$table->addRow()->addCell($script);
As mensagens de erro são duas, veja:
Nota: Undefined variable: mesa em C: wamp www Filme app Control Cadasto FilmeForm.class.php na linha 13
Erro fatal: Chamada a uma addRow função de membro () em um não-objeto em C: wamp www Filme app Control Cadasto FilmeForm.class.php na linha 13
Veja ai a parte inicial do meu código, veja ai se você está vendo o erro.
Alex, acho que é porque estou usando o componente TTable para organizar os elementos.
Segue o meu código na íntegra:
<?
class ClienteFormulario extends TPage
{
private $form; // formulário
/**
* Construtor da Classe
* Cria a página e o formulário
*/
public function __construct()
{
parent::__construct();
// cria o formulário
$this->form = new TForm('form_Cliente');
$this->form->class = 'tform'; // CSS class
$this->form->style = 'width: 500px';
// cria a tabela
$table = new TTable;
$table->width = '100%';
$table_buttons = new TTable;
// adiciona a tabela dentro do formulário
$this->form->add($table);
// cria os campos do formulário
$id = new TEntry('id');
$nome = new TEntry('nome');
$cpf = new TEntry('cpf');
$rg = new TEntry('rg');
$matricula = new TEntry('matricula');
$data_nascimento = new TDate('data_nascimento');
$sexo = new TCombo('sexo');
$endereco = new TEntry('endereco');
$bairro = new TEntry('bairro');
$cidade = new TEntry('cidade');
$id_estado = new TDBCombo('id_estado', 'almoxarifado', 'Estado', 'id', 'nome');
$cep = new TEntry('cep');
$telefone = new TEntry('telefone');
$email = new TEntry('email');
$id_setor = new TDBCombo('id_setor', 'almoxarifado', 'Setor', 'id', 'nome');
$obs = new TText('obs');
// define os tamanhos
$id->setSize(100);
$nome->setSize(250);
$cpf->setSize(150);
$rg->setSize(150);
$matricula->setSize(150);
$data_nascimento->setSize(100);
$sexo->setSize(100);
$endereco->setSize(250);
$bairro->setSize(150);
$cidade->setSize(150);
$id_estado->setSize(150);
$cep->setSize(100);
$telefone->setSize(150);
$email->setSize(200);
$id_setor->setSize(300);
$obs->setSize(300, 100);
$id->setEditable(FALSE);
$cpf->setMask('999.999.999-99');
$matricula->setMask('9999999');
$data_nascimento->setMask('dd/mm/yyyy');
$cep->setMask('99999-999');
$telefone->setMask("(99)9999-9999");
$sexo->addItems(array(1 => 'MASCULINO', 2 => 'FEMININO'));
// validação dos campos
$nome->addValidation('NOME', new TRequiredValidator); // campo obrigatório
$matricula->addValidation('MATRICULA', new TRequiredValidator); // campo obrigatório
$email->addValidation('E-MAIL', new TRequiredValidator); // campo obrigatório
$email->addValidation('E-MAIL', new TEmailValidator); // email válido
$id_setor->addValidation('SETOR', new TRequiredValidator); // campo obrigatório
// adiciona jQuery para máscara e focus
$nome->id = 'nome';
$rg->id = 'rg';
$endereco->id = 'endereco';
$bairro->id = 'bairro';
$cidade->id = 'cidade';
$script = new TElement('script');
$script->type = 'text/javascript';
$script->add('
$("#nome").focus();
$("#nome").on("input", function(evt) { $(this).val(function (_, val) { return val.toUpperCase(); }); });
$("#rg").on("input", function(evt) { $(this).val(function (_, val) { return val.toUpperCase(); }); });
$("#endereco").on("input", function(evt) { $(this).val(function (_, val) { return val.toUpperCase(); }); });
$("#bairro").on("input", function(evt) { $(this).val(function (_, val) { return val.toUpperCase(); }); });
$("#cidade").on("input", function(evt) { $(this).val(function (_, val) { return val.toUpperCase(); }); });
');
$table->addRow()->addCell($script);
// define o título do formulário
$row = $table->addRow();
$row->class = 'tformtitle';
$cell = $row->addCell(new TLabel('Cadastro de Clientes'));
$cell->colspan = 2;
// adiciona os campos do formulário
$table->addRowSet(new TLabel('ID:'), $id);
$table->addRowSet(new TLabel('Nome:'), $nome);
$table->addRowSet(new TLabel('CPF:'), $cpf);
$table->addRowSet(new TLabel('RG:'), $rg);
$table->addRowSet(new TLabel('Matrícula:'), $matricula);
$table->addRowSet(new TLabel('Nascimento:'), $data_nascimento);
$table->addRowSet(new TLabel('Sexo:'), $sexo);
$table->addRowSet(new TLabel('Endereço:'), $endereco);
$table->addRowSet(new TLabel('Bairro:'), $bairro);
$table->addRowSet(new TLabel('Cidade:'), $cidade);
$table->addRowSet(new TLabel('Estado:'), $id_estado);
$table->addRowSet(new TLabel('CEP:'), $cep);
$table->addRowSet(new TLabel('Telefone:'), $telefone);
$table->addRowSet(new TLabel('E-mail:'), $email);
$table->addRowSet(new TLabel('Setor:'), $id_setor);
$table->addRowSet(new TLabel('Observação:'), $obs);
// cria o botão de ação (salvar)
$save_button = new TButton('save');
$save_button->setAction(new TAction(array($this, 'onSave')), 'Salvar');
$save_button->setImage('ico_save.png');
// cria o botão de ação (novo)
$new_button = new TButton('new');
$new_button->setAction(new TAction(array($this, 'onEdit')), 'Novo');
$new_button->setImage('ico_new.png');
// cria o botão de ação (listar)
$goto_button = new TButton('list');
$goto_button->setAction(new TAction(array('ClienteListagem', 'onReload')), 'Listar');
$goto_button->setImage('ico_datagrid.png');
// adiciona uma linha para a ação do formulário
$row = $table_buttons->addRow();
$row->addCell($save_button);
$row->addCell($new_button);
$row->addCell($goto_button);
// adiciona uma linha para a ação do formulário
$row = $table->addRow();
$row->class = 'tformaction';
$cell=$row->addCell($table_buttons);
$cell->colspan = 2;
// define quais são os campos do formulário
$this->form->setFields(array($id, $nome, $cpf, $rg, $matricula, $data_nascimento, $sexo, $endereco, $bairro, $cidade, $id_estado, $cep, $telefone, $email, $id_setor, $obs, $save_button, $new_button, $goto_button));
// empacota o conteúdo da página usando uma caixa vertical
$vbox = new TVBox;
$vbox->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
$vbox->add($this->form);
parent::add($vbox);
}
/**
* método onSave()
* Executado quando o usuário clicar no botão salvar
*/
public function onSave()
{
try
{
// valida o formulário
$this->form->validate();
// abre uma transação com o banco de dados 'almoxarifado'
TTransaction::open('almoxarifado');
$object = $this->form->getData('Cliente'); // pega os dados do formulário no Active Record Cliente
$object->data_nascimento = TDate::date2us($object->data_nascimento); // converte a data para o formato yyyy-mm-dd
$object->store(); // armazena o objeto
// preenche o formulário com os dados do Active Record
$object->data_nascimento = TDate::date2br($object->data_nascimento); // converte a data para o formato dd/mm/yyyy
$this->form->setData($object);
TTransaction::close(); // fecha a transação
// mostra uma mensagem de sucesso
new TMessage('info', 'Registro Salvo!');
// recarrega a listagem
}
catch (Exception $e) // no caso de exceção
{
// mostra a mensagem de erro da exceção
new TMessage('error', 'ERRO!
' . $e->getMessage());
// apaga todas as operações pendentes
TTransaction::rollback();
}
}
/**
* método onEdit()
* Executado quando o usuário clicar no botão Editar da datagrid
*/
public function onEdit($param)
{
try
{
if (isset($param['key']))
{
// pega o parâmetro $key
$key = $param['key'];
TTransaction::open('almoxarifado'); // abre uma transação com a base de dados 'almoxarifado'
$object = new Cliente($key); // instancia um objeto Cliente
$object->data_nascimento = TDate::date2br($object->data_nascimento); // converte a data para o formato dd/mm/yyyy
$this->form->setData($object); // preenche o formulário com os dados do Active Record Cliente
TTransaction::close(); // fecha a transação
}
else
{
$this->form->clear();
}
}
catch (Exception $e) // no caso de exceção
{
// mostra a mensagem de erro da exceção
new TMessage('error', 'Error ' . $e->getMessage());
// apaga todas as operações pendentes
TTransaction::rollback();
}
}
}
?>
Código colorido:
Eu não precisei adicionar uma table no meu form, veja ai o meu código fonte da tela de cadastro, como eu faria para adicionar o set focus?