Carcleo 4 Denunciar post Postado Maio 16, 2012 Pessoal, vou começar a usar uma mascara para moeda em jquery. Acontece que esta mascara, poe pontos em cada 3 casas e nos centavbs tamem. Como eu faço para, após submetido o form, retirar esses pontos mas deixar apenas os pontoa doa centavos? A ideia é guardar no mysql no tipo decimal. Aí preciso do ponto. Compartilhar este post Link para o post Compartilhar em outros sites
andre otto 15 Denunciar post Postado Maio 16, 2012 strreplace http://php.net/manual/pt_BR/function.str-replace.php Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Maio 16, 2012 Pois é. Mas observe que, como os carcters são todos um ponto(.) então, todos serão removidos. Eu preciso deixar o primeiro. O ponto dos centavos. Essa é a dificuldade. Pensei em fazer por exemplo alguma coisa assim: <?php $texto = "123.456.890.00"; for ($i=0;$i==12;$i++) { if($i==6 || $i==10) { substr($texto, $i); } } echo $texto; ?> Mas não funcionou tambem. Eu preciso remover o caracter que esta na posiçao $i. Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Maio 16, 2012 jeito simples, tosco e funcional $texto = "123.456.890.00"; $ar = explode('.', $texto); $first = $ar[0]; unset($ar[0]); echo $first . '.' . implode($ar); há outros diversos meios usando regex ou outras funções do php. Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Maio 16, 2012 Chegou a testar? resultou assim: 123.12389000 Teria que ser assim: 123123890.00 Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Maio 17, 2012 não testei. apenas escrevi o que veio a mente pense que queria manter apenas o primeiro ponto e remover o restante. se o caso é manter último ponto, o script é o mesmo. basta inverter a ordem.. o trabalho é seu, manda bala Compartilhar este post Link para o post Compartilhar em outros sites
Jhon Paulo 7 Denunciar post Postado Maio 17, 2012 o trabalho é seu, manda bala traduzindo: Quer mais o que? te dei a faca e o queijo! toma o queijo cortado: http://forum.imasters.com.br/topic/282462-resolvido%26nbsp%3Bfuncao-do-php-para-retirar-caracter-de-um-string/ Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Maio 17, 2012 Acho que não consegui passar direito o que eu queria. O que estou precisando saber, é se já existe um função nativa do php que faça isso. Mas, como parece que não existe, desenvolvi uma e quero compratilhar. Essa função, retira pontos e virgulas de todas a string e coloca um ponto no lugar dos centavos. <?php $test = '134.123.456.00'; function ponto_centavos($posicao,$operador,$string) { $string = str_replace('.','',$string); $string = str_replace(',','',$string); $temp = substr($string,$posicao); $saida = substr_replace($string,"$operador",$posicao); $saida .= $temp; return $saida; } print ponto_centavos(-2,".",$test); // colocar o ponto no lugar dos centavos //retornará 134123456.00 ?> Agora, se puderem me ajudar nessa outra duvida agradeço: http://forum.imasters.com.br/topic/465030-chekcando-radio-button/#entry1842526 Forte abraço. É para usuar mais para numeros(moeda mesmo) mas da para usar com string tambem. Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Maio 17, 2012 Acontece que esta mascara, poe pontos em cada 3 casas e nos centavbs tamem. Tem coisa mal aí :unsure: Se for este plugin (maskInputMoney) que você está usando, tente assim $( '#money' ).maskMoney( {symbol: "R$ ", decimal: ",", thousands: "."} ); :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Maio 17, 2012 Fala chará: Estou usando assim: // JavaScript Document $(function(){ $(".dolar").maskMoney() $(".real").maskMoney({symbol:"R$",decimal:",",thousands:"."}) $(".euro").maskMoney({symbol:"Euro",decimal:",",thousands:" "}) $(".precision").maskMoney({decimal:",",thousands:" ",precision:3}) }) Da forma que voce falou, $( '#money' ).maskMoney( {symbol: "R$ ", decimal: ",", thousands: "."} ); Eu teria que usar id. Daí, do jeito que eu fiz, eu uso classe. Mas, tanto do jeito teu quanto do meu, retorna assim: 999.999.99 Aproveitando o tópico. Tem uma duvida que eu gostaria de tirar. Estando dentro de um arquivo js. Tipo funcao.js, tem como incluir o codigo de outro arquivo js? Tipo: funcao.js import outro_arquivo.js function fazer_alguma_coisa() { } Como eu faria isso? A ideia é que só nesse arquivo que eu usaria o arquivo e esse arquivo outro_arquivo.js é o plugin jquery. Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Maio 17, 2012 um js chamando outro js: var script = document.createElement( 'script' ); script.async = true; // false para torná-lo síncrono script.type = 'text/javascript'; script.src = 'http://....'; // a url do arquivo js $("#objeto").append( script ); Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Maio 17, 2012 Tentei assim: macara_moeda.js // JavaScript Document var script = document.createElement( 'script' ); script.async = true; // false para torná-lo síncrono script.type = 'text/javascript'; script.src = 'jquery.js'; // a url do arquivo js script.src = 'jquery.maskMoney.js'; // a url do arquivo js $("#objeto").append( script ); $(function(){ $(".dolar").maskMoney() $(".real").maskMoney({symbol:"R$",decimal:",",thousands:"."}) $(".euro").maskMoney({symbol:"Euro",decimal:",",thousands:" "}) $(".precision").maskMoney({decimal:",",thousands:" ",precision:3}) }) Os arquivos jquery e jquery_maskMoney estão no mesmo diretorio que o mascara_moeda.js. Mas, quando chamo o mascara_moeda.js a partir do arquivo html para usar a mascara esta dando esse erro: SCRIPT5009: '$' não está definido mascara_moeda.js, linha 9 Caractere 1 Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Maio 17, 2012 precisa do jquery já incluso para usar os cifrões Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Maio 17, 2012 Então terei que fazer duas vezes; var script = document.createElement( 'script' ); script.async = true; // false para torná-lo síncrono script.type = 'text/javascript'; script.src = 'jquery.maskMoney.js'; // a url do arquivo js $("#objeto").append( script ); e var script = document.createElement( 'script' ); script.async = true; // false para torná-lo síncrono script.type = 'text/javascript'; script.src = 'jquery.js'; // a url do arquivo js $("#objeto").append( script ); Um pro jquery e outro para o jquey.masKMoney? Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Maio 17, 2012 não... jquery.js é a base, é o framework... já deve estar incluso no cabeçalho do documeto html <head> <script type="text/javascript" src="jquery.js"></script> </head> obs: ..pode fazer algo sem precisar do jquery porém terá que criar os seus próprios recursos. Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Maio 17, 2012 Então não há como chamar o framework através do arquivo de script? Terei mesmo que inclui-lo no html? Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Maio 17, 2012 Você poderia criar suas máscaras usando apenas javascript :thumbsup: se for usar o jquery apenas para esse propósito. Não sou um expert em javascript, mas já serve de base. :blush: <html> <head> <title>Test Mask</title> <script type="text/javascript"> function Mask( obj ) { var object = this; this.money = function( obj, symbol, decimal, thousands ) { obj.value = symbol + ' ' + obj.value .replace( /\D/g, '' ) .replace( /(\d)(\d{8})$/, '$1' + thousands + '$2' ) .replace( /(\d)(\d{5})$/, '$1' + thousands + '$2' ) .replace( /(\d)(\d{2})$/, '$1' + decimal + '$2' ); setTimeout( this.object.money( obj ), 1 ); } } var mask = new Mask( ); window.onload = function( ) { document.getElementById( 'real' ).onfocus = function( ){ this.value = 'R$ '; } document.getElementById( 'real' ).onkeyup = function( ){ mask.money( this, 'R$', ',', '.' ); } } </script> </head> <body> <form method="post" action=""> <label>Valor: </label> <input type="text" id="real" /> </form> </body> </html> Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Maio 18, 2012 Tenho a função abaixo que faz bem o que eu quero mas eu não consigo colocar um maxlenght no campo usando essa funbção de mascara. como a mascara de jquery eu consigo usar maxLength no campo para limitar em 11 e 14 digito conforme o caso CPF ou CNPJ. Segue a função: function MascaraMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, e){ var sep = 0; var key = ''; var i = j = 0; var len = len2 = 0; var strCheck = '0123456789'; var aux = aux2 = ''; var whichCode = (window.Event) ? e.which : e.keyCode; if (whichCode == 13) return true; key = String.fromCharCode(whichCode); // Valor para o código da Chave if (strCheck.indexOf(key) == -1) return false; // Chave inválida len = objTextBox.value.length; for(i = 0; i < len; i++) if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break; aux = ''; for(; i < len; i++) if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) aux += objTextBox.value.charAt(i); aux += key; len = aux.length; if (len == 0) objTextBox.value = ''; if (len == 1) objTextBox.value = '0'+ SeparadorDecimal + '0' + aux; if (len == 2) objTextBox.value = '0'+ SeparadorDecimal + aux; if (len > 2) { aux2 = ''; for (j = 0, i = len - 3; i >= 0; i--) { if (j == 3) { aux2 += SeparadorMilesimo; j = 0; } aux2 += aux.charAt(i); j++; } objTextBox.value = ''; len2 = aux2.length; for (i = len2 - 1; i >= 0; i--) objTextBox.value += aux2.charAt(i); objTextBox.value += SeparadorDecimal + aux. substr(len - 2, len); } return false; } Compartilhar este post Link para o post Compartilhar em outros sites
Everaldo Grunge 2 Denunciar post Postado Maio 18, 2012 Pois é. Mas observe que, como os carcters são todos um ponto(.) então, todos serão removidos. Eu preciso deixar o primeiro. O ponto dos centavos. Essa é a dificuldade. Pensei em fazer por exemplo alguma coisa assim: <?php$texto = "123.456.890.00";for ($i=0;$i==12;$i++){ if($i==6 || $i==10) { substr($texto, $i); }}echo $texto;?> Mas não funcionou tambem. Eu preciso remover o caracter que esta na posiçao $i. Tenta isso: $number = str_replace( '.', '', '51.52.035.4650');$number = str_replace( ',', '', $number);$number = number_format($number, 2, '.', null);$number = str_replace( ',', '', $number);echo $number; Então não há como chamar o framework através do arquivo de script? Terei mesmo que inclui-lo no html? sim.. obviamente é possível.. ninguém é obrigado a usar jquery, exts, prototype.. são apenas frameworks escritos em javascript para facilitar o uso de funções e recursos rotineiros e principalmente devido ao cross-browser (compatibilidade com browsers diversos). <html><head><script type="text/javascript">function ObjSet( eln ){ var rr = false; if( document.all ){ if( document.all[eln] ){ rr = document.all[eln]; } }else{ if( document[eln] ){ rr = document[eln]; }else{ if( document.getElementById(eln) ){ rr = document.getElementById(eln ); } } } return rr;}function AppendJS( url ){ var script = document.createElement('script'); script.setAttribute('async',false); // false: síncrono, true: assíncrono script.setAttribute('type','text/javascript'); script.setAttribute('src',url); document.getElementsByTagName("head")[0].appendChild(script);}window.onload = function () { AppendJS( 'jquery.js' );}</script></head><body>hello world</body></html> Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Maio 18, 2012 Tenta isso: $number = str_replace( '.', '', '51.52.035.4650'); $number = str_replace( ',', '', $number); $number = number_format($number, 2, '.', null); $number = str_replace( ',', '', $number); echo $number; Fiz assim: <?php //Essa função, retira pontos e virgulas de todas a string e coloca um ponto no lugar dos centavos. function ponto_centavos($posicao,$operador,$string) { $string = str_replace('.','',$string); // retira os pontos $string = str_replace(',','',$string); // retira as virgulas $temp = substr($string,$posicao); // retira dos dois ultimos digitos da string (-2) $saida = substr_replace($string,"$operador",$posicao); //adiciona o operador (.) ao final da string $saida .= $temp; // adiciona à string, após o operador que foi adicinado na posição ($posicao), a parte da string que foi retirada return $saida; // retorena a saida; } /* uso $test = '134.123.456.00'; ponto_centavos(-2,".",$test); // colocar o ponto no lugar dos centavos retornará 134123456.00 */ ?> Ainda continuo não conseguindo colocar maxLength no campo editavel quando uso a mascara que tenho. A que não usa Jquery. Alguma orientação? Compartilhar este post Link para o post Compartilhar em outros sites