This topic is locked

Veja como adicionar máscara no campo com phprunner 5.3

1/5/2011 6:02:49 AM
PHPRunner Tips and Tricks
E
ericholiveira author

veja como adicionar máscara nos campos com phprunner 5.3
Baixe o script jquery.maskedinput.js http://digitalbush.com/projects/masked-input-plugin/
Localize a linha abaixo no add.php e edit.php (C:\Program Files\PHPRunner5.3\source)

$includes .="<script language=\"JavaScript\" src=\"include/jquery.js\"></script>\r\n";


acrescente logo abaixo a linha ficando assim:



$includes .="<script language=\"JavaScript\" src=\"include/jquery.js\"></script>\r\n";

$includes .= "<script language=\"JavaScript\" src=\"include/jquery.maskedinput.js\"></script>\r\n";


adicione o codigo em Javascript Onload Event



jQuery(function($){

$("#value_fone1_1").mask("(99)9999-9999");

$("#value_fone2_1").mask("(99)9999-9999");

});
R
rodny 1/14/2011



veja como adicionar máscara nos campos com phprunner 5.3
Baixe o script jquery.maskedinput.js http://digitalbush.com/projects/masked-input-plugin/
Localize a linha abaixo no add.php e edit.php (C:\Program Files\PHPRunner5.3\source)

$includes .="<script language=\"JavaScript\" src=\"include/jquery.js\"></script>\r\n";


acrescente logo abaixo a linha ficando assim:



$includes .="<script language=\"JavaScript\" src=\"include/jquery.js\"></script>\r\n";

$includes .= "<script language=\"JavaScript\" src=\"include/jquery.maskedinput.js\"></script>\r\n";


adicione o codigo em Javascript Onload Event



jQuery(function($){

$("#value_fone1_1").mask("(99)9999-9999");

$("#value_fone2_1").mask("(99)9999-9999");

});



Ótima dica Erich... parabens.

Uma pergunta: esta logica serve para toda a biblioteca jquery?

Obrigado.
Rodny =)

RS

E
ericholiveira author 1/15/2011

Olá Rodny,
Sim, tenho usado a mesma logica para outras classes da Biblioteca.

Por Exemplo: Para a formatação de Moeda, Eu acrescentei a biblioteca maskMoney

$includes .="<script language=\"JavaScript\" src=\"include/jquery.js\"></script>\r\n";

$includes .= "<script language=\"JavaScript\" src=\"include/jquery.maskedinput.js\"></script>\r\n";

$includes .= "<script language=\"JavaScript\" src=\"include/jquery.maskMoney.0.2.js\"></script>\r\n"


No seu projeto, acrescente o codigo no Javascript onLoadEvent

$(function(){

$("#value_valor_estimado_1").maskMoney ({symbol:"R$",decimal:",",thousands:"."});

});


Voce pode incluir os arquivos diretamente, ou ainda editar o arquivo files.txt e deixar o programa envie automaticamente os arquivos para novos projetos.

R
redhazor 2/1/2011



veja como adicionar máscara nos campos com phprunner 5.3
Baixe o script jquery.maskedinput.js http://digitalbush.com/projects/masked-input-plugin/
Localize a linha abaixo no add.php e edit.php (C:\Program Files\PHPRunner5.3\source)

$includes .="<script language=\"JavaScript\" src=\"include/jquery.js\"></script>\r\n";


acrescente logo abaixo a linha ficando assim:



$includes .="<script language=\"JavaScript\" src=\"include/jquery.js\"></script>\r\n";

$includes .= "<script language=\"JavaScript\" src=\"include/jquery.maskedinput.js\"></script>\r\n";


adicione o codigo em Javascript Onload Event



jQuery(function($){

$("#value_fone1_1").mask("(99)9999-9999");

$("#value_fone2_1").mask("(99)9999-9999");

});



Salve salve!
Talvez seja uma pergunta estúpida, mas sou newbie no phprunner...
Os campos são gerados com valores únicos como por exemplo "value_fone1_1", "value_fone1_148" e por aí vai, sendo o último número "1", "148" ou "X" o valor único.
Se eu utilizar um valor fixo, ele não detectará. Como faço para ele usar o valor de "X" na função?
Abraço!

E
ericholiveira author 2/2/2011

Olá Acchile Biagioli,
Infelizmente, o jeito mais prático que consegui é colocar todos os campos no evento de javascript

$(function(){

$("#value_valor_estimado_1").maskMoney ({symbol:"R$",decimal:",",thousands:"."});

$("#value_valor_propoto_1").maskMoney ({symbol:"R$",decimal:",",thousands:"."});

})
F
fcbinfo 4/19/2011

Pra mim não funcionou... tentei de tudo quanté jeito...
Não sei se o post já esta antigo, e os plugins ja estao mais novos e por isto não funciona. Não consegui colocar nenhuma mascara, tentei de todas as formas, realmente nao vai.

F
fcbinfo 4/20/2011

Bom, até o extremo.
Criei uma nova aplicação... fiz exatamente como esta ai... até os campos fone1 e fone2 criei no meu projeto para poder testar.
Quando mando gerar a aplicação, vai direitinho la pra pasta include uma copia do maskinput.js (compactado que o proprio phprunner compacta), configurei no Javascript onloadEvent e não consegui fazer funcionar a mascara.
O pior de tudo, é que se eu não conseguir fazer isto funcionar, e fazer validar CPF e CNPJ, joguei US$ 399 no lixo.
Estou apavorado !

F
fcbinfo 4/20/2011

Descobri o problema. Se colocar as paginas para serem exibidas via pop-up, não funciona. Sem pop-up... funcionou legal.
Valeu pela dica.
Realmente muito bom post.

E
ericholiveira author 4/25/2011



Descobri o problema. Se colocar as paginas para serem exibidas via pop-up, não funciona. Sem pop-up... funcionou legal.
Valeu pela dica.
Realmente muito bom post.


para funcionar no popup, basta adicionar os carregamento dos javascript antes Before Display

milver 8/5/2011



para funcionar no popup, basta adicionar os carregamento dos javascript antes Before Display


Não consegui colocar a máscara em modo popup você poderia exemplificar? só falta isso para o término do meu projeto...

F
FunkDaddy 8/11/2011

A maneira mais facil de incluir o plugin para mascara e inserir um "Insert PHP code snippet" via o visual editor (use o menu /toolbar) dentro do seu formulario popup. Dentro do snippet coloque:



//Insira isto dentro do snippet colocado dentro do formulario popup

echo "<script type=text/javascript src=\"include/jquery.maskedinput-1.2.2.js\"></SCRIPT>";


Desta forma a plugin estara disponivel no popup. Voce simplesmete coloca a mascara no evento do popup "Javascript OnLoad event"



//http://digitalbush.com/projects/masked-input-plugin/

//Primeiro use o Javascript API do PHPRunner para acessar os campos (a partir da versao 5.3 estes campos possuem nomes dinamicos, portanto a maneira de acessar e usando o API ja que nao tem nome fixo)

var Phone= Runner.getControl(pageid, 'Phone');
//Agora adicione a mascara (exemplo de um phone nos EUA)

Phone.getDispElem().mask("999-999-9999");


Boa Sorte! :-)

T
Thiago Araujo 8/18/2011

Galera eu ja tentei tudo que colocaram aki e não consegui colocar mascara nos campos, não sei oque estou fazendo de errado se alguém consiga me ajudar ficaria muito grato, sou novo no phprunner e ainda tenho muito oque aprender

F
FunkDaddy 8/22/2011

Thiago,
Preciso de mais detalhes, pois nao sera possivel Eu ajudar sem saber extamente o que voce tentou fazer que nao deu certo.
Me mande a versao do PHP Runner que voce esta usando (ex: PHPRunner 5.3 (Build ????)
Tambem indique se qual tipo de formulario voce esta tentando colocar a mascara (ex: add, edit, popup, inline, etc)
Quanto mais detalhes voce providenciar, melhor para podermos lhe ajudar. Inclusive, se voce tiver um link para seu aplicativo na web (com uma senha demo) melhor ainda.
Abraco,

F
FunkDaddy 8/22/2011

Thiagos reply via direct email to me:



Estou usando PHPRunner 5.3 (Build 7113),
Estou querendo colocar a mascara de forma que apareça quando o usuario visualize os dados "list" e tambem quando ele for acrescentar e editar os dados "add e edit", gostaria que ela aparece-se automaticamente de acordo com que o usuario va digitando.
Fiz a mesma coisa que estava sendo ensinada no forum, baixei o arquivo "jquery.maskedinput.js" o coloquei no diretorio include e depois editei os arquivos add.php e edit.php acrescentando as referidas linhas pedidas no forum, apos isso coloquei o codigo a seguir no onload event da pagina add ....
jQuery(function($){

$("#Num_Ano_Doc").mask("999999/9999");

$("#Processo").mask("99999/9999/999/9999");

$("#Tel_Denunciante").mask("(99)9999-9999");

$("#Num_Prot_Resp_Pre").mask("999999/9999");

$("#Num_Prot_Resp_Def").mask("999999/9999");

});
fiz apenas isso e a mascara nao apareceu no campo, tenho certeza que devo fazer mais alguma coisa alem disso porem sou novo na area e ainda não consegui descobrir o

que fazer ....
tentei usar o codigo da seguinte forma abaixo e tambem não deu certo ....
var Num_Ano_Doc= Runner.getControl(pageid, 'Num_Ano_Doc');

Num_Ano_Doc.getDispElem().mask("999999/9999");
Infelizmente por hora não tenho como fornecer o link de acesso ao sistema mas assim que possivel se nao conseguirmos resolver por e-mail irei providenciar de acesso.
Att
Thiago


Here is my reponse (Aqui esta minha resposta):
Thiago,
Algumas teorias sobre seu problema:

  1. Talveze o problema e a forma que voce esta incluindo o arquivo "jquery.maskedinput.js" no seu documento. Tente inserir um PHP snippet em qualquer lugar na sua pagina (edit, add, list, etc) contanto que seja acima de onde aparecam os seus fields (ex: Num_Ano_Doc, Processo, etc) - desta forma o browser tem tempo de load a arquivo do masked input antes de ter qualquer referencia aos seus fields, caso contrario o browser nao tera ao o que referir quando estiver rendering os fields.
  2. Verifique que o lugar aonde este php snippet refere-se ao arquivo do masked input esta realmente no lugar certo (ex: include/jquery.maskedinput.js etc)
  3. Nao ha necessidade de colocar jQuery(function($){etc...} voce pode simplesmente usar o API para Javascript do proprio PHP Runner. (veja a resposta #11 que coloquei aqui dentro deste mesmo thread fo forum).
  4. Nao tente colocar nenhum outro tipo de "validate field as" dos campos que voce esta colocando o inputmask pois isso cria conflitos na hora de salvar.
  5. Use Firebug para inspecionar sua pagina para ter certeza de que o arquivo "jquery.maskedinput.js" esta realmente loading via o "Net" tab do Firebug (caso nao conhece o Firebug aqui esta o link http://getfirebug.com/)
  6. Se voce usar o "insert php snippet" junto com a JS OnLoad event para resolver seu problema nao ha necessidade nenhuma de alterar os arquivos (edit.php, add.php, etc) diretamente. Voce pode fazer isso usando o macete que lhe dei e a coisa fica muito mais limpa. Tambem recomendo voce fazer o upgrade para PHPR 5.3 build (7474).
    Abracos,

T
Thiago Araujo 8/24/2011



Thiagos reply via direct email to me:
Here is my reponse (Aqui esta minha resposta):
Thiago,
Algumas teorias sobre seu problema:

  1. Talveze o problema e a forma que voce esta incluindo o arquivo "jquery.maskedinput.js" no seu documento. Tente inserir um PHP snippet em qualquer lugar na sua pagina (edit, add, list, etc) contanto que seja acima de onde aparecam os seus fields (ex: Num_Ano_Doc, Processo, etc) - desta forma o browser tem tempo de load a arquivo do masked input antes de ter qualquer referencia aos seus fields, caso contrario o browser nao tera ao o que referir quando estiver rendering os fields.
  2. Verifique que o lugar aonde este php snippet refere-se ao arquivo do masked input esta realmente no lugar certo (ex: include/jquery.maskedinput.js etc)
  3. Nao ha necessidade de colocar jQuery(function($){etc...} voce pode simplesmente usar o API para Javascript do proprio PHP Runner. (veja a resposta #11 que coloquei aqui dentro deste mesmo thread fo forum).
  4. Nao tente colocar nenhum outro tipo de "validate field as" dos campos que voce esta colocando o inputmask pois isso cria conflitos na hora de salvar.
  5. Use Firebug para inspecionar sua pagina para ter certeza de que o arquivo "jquery.maskedinput.js" esta realmente loading via o "Net" tab do Firebug (caso nao conhece o Firebug aqui esta o link http://getfirebug.com/)
  6. Se voce usar o "insert php snippet" junto com a JS OnLoad event para resolver seu problema nao ha necessidade nenhuma de alterar os arquivos (edit.php, add.php, etc) diretamente. Voce pode fazer isso usando o macete que lhe dei e a coisa fica muito mais limpa. Tambem recomendo voce fazer o upgrade para PHPR 5.3 build (7474).
    Abracos,


Eu fiz estas referidas alterações porem ao acessar a pagina a mesma não carrega fica apenas com a telinha de loading,
eu instalei o fireburg e observei que o "jquery.maskedinput.js" nao esta sendo chamado ao carregar a pagina, outra coisa eu estou utilizando o inline edit in line e o inline add ambos usados no list sera que isso esta influenciando alguma coisa??
eu atualizei o phpRunner porem o problema continuou mesmo com a versão atualizada

F
FunkDaddy 8/24/2011

Voce tem certeza que colocou um snippet dentro do edit e add forms? Tipo este:



//Insira isto dentro do snippet colocado dentro do formulario popup

echo "<script type=text/javascript src=\"include/jquery.maskedinput-1.2.2.js\"></SCRIPT>";


Verifique se voce tem o arquivo "jquery.maskedinput-1.2.2.js" dentro da pasta "include" (pois e naquela pasta que este code esta referindo ao arquivo... se nao estiver la nao vai conseguir carregar).
Tambem eliminaria a inline edit inline add por enquanto para reduzir o numero de variaveis que possa estar afetando seu projeto (pelo meno ate voce ter sucesso com o input mask).
Boa sorte,

T
Thiago Araujo 8/25/2011

Finalmente consegui colocar a mascara porem somente no edit e no add, agora no list page não esta funcionando e eu observei que quando coloco qualquer evento no "onload event" da list page, a page list não carrega fica apenas com uma tela de loading, alguém sabe porque isso ocorre?
Marcelo muito obrigado, você me ajudou muito

E
ericholiveira author 8/25/2011

Olá Thiago,

Esse função do Jquery só funciona para Formulários de Adição e Edição, pois é preciso informar o ID do campo. No caso da Edição em Linha o ID é dinamico por isso não foi possível implementar na linha.
Para funcionar na linha eu editei a função BuildEditControl do arquivo commonfunctions.php



if($edit==MODE_SEARCH){



echo '<input id="'.$cfield.'" '.$inputStyle.' type="text" autocomplete="off" '. (($edit==MODE_INLINE_EDIT || $edit==MODE_INLINE_ADD) && $is508==true ? 'alt="'.$strLabel.'" ' : '') . 'name="'.$cfield.'" '.GetEditParams($field).' value="'.htmlspecialchars($value).'">';

}

else{

else{

//ADICIONAR OS CAMPOS VALORES

if (

$field=="ValorAdiantamento"

|| $field=="ValorContratoLiquido"

|| $field=="ValorIPTU"

|| $field=="ValorEquipamento")

{

$valor_moeda = number_format($value, 2, ',', '.');

echo '<input id="'.$cfield.'" '.$inputStyle.' type="text" '.(($edit==MODE_INLINE_EDIT || $edit==MODE_INLINE_ADD) && $is508==true ? 'alt="'.$strLabel.'" ' : '').'name="'.$cfield.'" '.GetEditParams($field).' value="'.$valor_moeda.'" onKeyUp="FormataDecimal(this,2);" AUTOCOMPLETE="off">';



}else{
echo '<input id="'.$cfield.'" '.$inputStyle.' type="text" '.(($edit==MODE_INLINE_EDIT || $edit==MODE_INLINE_ADD) && $is508==true ? 'alt="'.$strLabel.'" ' : '').'name="'.$cfield.'" '.GetEditParams($field).' value="'.htmlspecialchars($value).'" AUTOCOMPLETE="off">';

}
T
Thiago Araujo 8/26/2011



Olá Thiago,

Esse função do Jquery só funciona para Formulários de Adição e Edição, pois é preciso informar o ID do campo. No caso da Edição em Linha o ID é dinamico por isso não foi possível implementar na linha.
Para funcionar na linha eu editei a função BuildEditControl do arquivo commonfunctions.php



if($edit==MODE_SEARCH){
echo '<input id="'.$cfield.'" '.$inputStyle.' type="text" autocomplete="off" '. (($edit==MODE_INLINE_EDIT || $edit==MODE_INLINE_ADD) && $is508==true ? 'alt="'.$strLabel.'" ' : '') . 'name="'.$cfield.'" '.GetEditParams($field).' value="'.htmlspecialchars($value).'">';

}

else{

else{

//ADICIONAR OS CAMPOS VALORES

if (

$field=="ValorAdiantamento"

|| $field=="ValorContratoLiquido"

|| $field=="ValorIPTU"

|| $field=="ValorEquipamento")

{

$valor_moeda = number_format($value, 2, ',', '.');

echo '<input id="'.$cfield.'" '.$inputStyle.' type="text" '.(($edit==MODE_INLINE_EDIT || $edit==MODE_INLINE_ADD) && $is508==true ? 'alt="'.$strLabel.'" ' : '').'name="'.$cfield.'" '.GetEditParams($field).' value="'.$valor_moeda.'" onKeyUp="FormataDecimal(this,2);" AUTOCOMPLETE="off">';
}else{
echo '<input id="'.$cfield.'" '.$inputStyle.' type="text" '.(($edit==MODE_INLINE_EDIT || $edit==MODE_INLINE_ADD) && $is508==true ? 'alt="'.$strLabel.'" ' : '').'name="'.$cfield.'" '.GetEditParams($field).' value="'.htmlspecialchars($value).'" AUTOCOMPLETE="off">';

}



E para colocar mascara na List page e print page, simplesmente para a visualização do dados como devo proceder?? Quando eu coloco o evento de mascara no "onload event" da List page a mesma não carrega fica apenas com a telinha de loading muito estranho

E
ericholiveira author 9/1/2011





Se for apenas mostrar na visualização, vc pode usar o campo "custom" para fazer as formatações necessárias.
Exemplo, para mostrar uma imagem de ativo ou inativo quando o valor for 1 ou zero





if($value==1)

$value = '<img src="botoes/ativo.png" />';

else {

$value = '<img src="botoes/inativo.png" />';

}
B
bobdansei 11/11/2011

Só para atualizar.. eu testei no phpr6 e funciona muito bem inclusive consegui fazer a entrada com CPF e CNPJ..
muito boa dica!

O
onlline 1/16/2013



Olá Rodny,
Sim, tenho usado a mesma logica para outras classes da Biblioteca.

Por Exemplo: Para a formatação de Moeda, Eu acrescentei a biblioteca maskMoney

$includes .="<script language=\"JavaScript\" src=\"include/jquery.js\"></script>\r\n";

$includes .= "<script language=\"JavaScript\" src=\"include/jquery.maskedinput.js\"></script>\r\n";

$includes .= "<script language=\"JavaScript\" src=\"include/jquery.maskMoney.0.2.js\"></script>\r\n"


No seu projeto, acrescente o codigo no Javascript onLoadEvent

$(function(){

$("#value_valor_estimado_1").maskMoney ({symbol:"R$",decimal:",",thousands:"."});

});


Voce pode incluir os arquivos diretamente, ou ainda editar o arquivo files.txt e deixar o programa envie automaticamente os arquivos para novos projetos.


OI!
Funciona bem mais a soma on fly para de funcionar, como resolvo essa questão?
Obrigado !