Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Carcleo

retirar carcaters e deixar alguns

Recommended Posts

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.