Ir para conteúdo

Arquivado

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

fael

Limitar caracteres antes da vírgula

Recommended Posts

Pessoal,

 

Preciso de alguma função ou coisa parecida que limite a quantidade de caracteres digitados antes e depois de uma vírgula dentro de uma text.

 

Eu já tenho uma função para colocar a vírgula automaticamente, mas se eu voltar para a primeira casa e começar a digitar de novo ele deixa, e eu quero desabilitar isso.

 

Desde já agradeço a ajuda de todos. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

Um abraço,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade eu preciso de algo que limite os caracteres que vierem após uma vírgula. Por exemplo: O usuário está digitando, e quando chegar na vírgula ele começa a contagem e tranca após um número extado de caracteres. Ou algo que começe a digitar da direita para a esquerda, pois eu quero que o usuário seja obrigado a digitar um valor monetareo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se tiver como fazer para que seja obrigatório ter dois caracteres após a vírgula, já ajuda. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

já tentou fazer assim?imagine que o seu campo se chama "valor"<script>var tamanho = parseInt(document.forms[0].valor.length);var virgula = parseInt(document.forms[0].valor.indexOf(","))if ((tamanho - virgula) != 3){ alert("Deve haver duas casas depois da virgula");}</script>[]'s http://forum.imasters.com.br/public/style_emoticons/default/ninja.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha meu arquivo html de teste, já está com função que você me passou:

 

<html><head><title>[- Validações de Formulário -]</title><script language="JavaScript">var ns6=document.getElementById&&!document.allfunction RestringeInput(maxlength,e,placeholder){ if (window.event&&event.srcElement.value.length>=maxlength) {  return false } else if (e.target&&e.target==eval(placeholder)&&e.target.value.length>=maxlength){  var PressTecla=/[a-zA-Z0-9\.\,\/]/ //detecta caracteres alfanuméricos  if (PressTecla.test(String.fromCharCode(e.which))) {   e.stopPropagation()  } }}function ContaLimite(maxlength,e,placeholder){ var theform=eval(placeholder) var lengthleft=maxlength-theform.value.length var placeholderobj=document.all? document.all[placeholder] : document.getElementById(placeholder) if (window.event||e.target&&e.target==eval(placeholder)){  if (lengthleft<0)   theform.value=theform.value.substring(0,maxlength)   placeholderobj.innerHTML=lengthleft }}function MostraLimite(theform,thelimit){ var limit_text='<span id="'+theform.toString()+'" style="font-family:Tahoma; font-size:11px; color:#FF0000">'+thelimit+'</span><span style="font-family:Tahoma; font-size:11px; color:#FF0000"> caracteres restantes.</span>'  if (document.all||ns6)   document.write(limit_text)  if (document.all){   eval(theform).onkeypress=function(){ return RestringeInput(thelimit,event,theform)}   eval(theform).onkeyup=function(){ ContaLimite(thelimit,event,theform)}  } else if (ns6) {   document.body.addEventListener('keypress', function(event) { RestringeInput(thelimit,event,theform) }, true);   document.body.addEventListener('keyup', function(event) { ContaLimite(thelimit,event,theform) }, true);  }}function FormataCampo(Campo,teclapres,mascara){ //pegando o tamanho do texto da caixa de texto com delay de -1 no event //ou seja o caractere que foi digitado não ser encontado. strtext = Campo.value tamtext = strtext.length //pegando o tamanho da máscara tammask = mascara.length //criando um array para guardar cada caractere da máscara arrmask = new Array(tammask) //jogando os caracteres para o vetor for (var i = 0; i < tammask; i++){  arrmask[i] = mascara.slice(i,i+1) } //alert (teclapres.keyCode) //começando o trabalho sujo if (((((arrmask[tamtext] == "#") || (arrmask[tamtext] == "9"))) || (((arrmask[tamtext+1] != "#") || (arrmask[tamtext+1] != "9"))))){  if ((teclapres.keyCode >= 37 && teclapres.keyCode <= 40)||(teclapres.keyCode >= 48 && teclapres.keyCode <= 57)||(teclapres.keyCode >= 96 && teclapres.keyCode <= 105)||(teclapres.keyCode == 8)||(teclapres.keyCode == 9) ||(teclapres.keyCode == 46) ||(teclapres.keyCode == 13)){   OrganizaCasa(Campo,arrmask[tamtext],teclapres.keyCode,strtext)  } else {   DetonaEvent(Campo,strtext)  } } else {  if ((arrmask[tamtext] == "A"))    {   charupper = event.valueOf()   //charupper = charupper.toUpperCase()   DetonaEvent(Campo,strtext)   masktext = strtext + charupper   Campo.value = masktext  } }}//Adiciona todos os caracteres que podem ser usados como máscarafunction OrganizaCasa(Campo,arrpos,teclapres_key,strtext){ if (((arrpos == "/") || (arrpos == ".") || (arrpos == ",") || (arrpos == ":") || (arrpos == " ") || (arrpos == "-")) && !(teclapres_key == 8)){  separador = arrpos  masktext = strtext + separador  Campo.value = masktext }}function DetonaEvent(Campo,strtext){ event.returnValue = false if (strtext != "") {  Campo.value = strtext }}function VerificaForm(){ var str = "0"; var expReg = new RegExp("[2],"); InstArray = expReg.exec(str); if (document.frmteste.elements["txt.nome"].value == ""){  window.alert("O campo Nome não pode ser vazio!");  document.frmteste.elements["txt.nome"].focus();  return false; } if (document.frmteste.elements["txt.endereco"].value == ""){  window.alert("O campo Endereço não pode ser vazio!");  document.frmteste.elements["txt.endereco"].focus();  return false; } /*if (document.frmteste.moeda.value.indexOf (',',0) == -1) {  alert ("Por favor, preencha corretamente o campo Moeda");  document.frmteste.moeda.focus();  return false; } if (document.frmteste.elements["txt.moeda"].value.indexOf ('(/{2}/)',0) == -1) {  alert ("O campo Moeda deve conter dois dígitos após a vírgula!");  document.frmteste.elements["txt.moeda"].focus();  return false; }*/}function ValidaMoeda() { var tamanho = parseInt(document.forms[0].moeda.length); var virgula = parseInt(document.forms[0].moeda.indexOf(",")); if ((tamanho - virgula) != 3){  alert("O campo Moeda deve conter dois dígitos após a vírgula!"); }}function NumberOnly(){ if(event.keyCode < 48 || event.keyCode > 57){ //Só aceita caracteres com código ASCII entre 48..57 (números)  event.returnValue=false; }} /*var str = "O pato encontrou um rato no mato"; var expReg = new RegExp("[rmp]ato"); InstArray = expReg.exec(str); alert (InstArray[0]);*/</script><style type="text/css">.txt{  font-family: Tahoma;  font-size: 11px;  color: #006699;  border-top: 1px inside #000000;  border-left: 1px inside #000000;  border-bottom: 1px solid #F3F3F3;  border-right: 1px solid #F3F3F3}.textarea{  font-family: Tahoma;  font-size: 11px;  color: #006699;  border-top: 1px inside #000000;  border-left: 1px inside #000000;  border-bottom: 1px solid #F0F0F0;  border-right: 1px solid #F0F0F0}.btn{  font-family: Verdana;  font-size: 11px;  font-weight: bold;  color: #006699;  border: 1px solid #006699;  background-color: #FFFFFF}table{  font-family: Verdana;  font-size: 11px;  color: #006699}body{  font-family: Verdana;  font-size: 11px;  color: #006699}</style></head><body topmargin="30" leftmargin="0" marginheight="0" marginwidth="0"><form name="frmteste" onSubmit="return VerificaForm();ValidaMoeda()" method="post"> <table border="0" cellpadding="5" cellspacing="0" align="center">  <tr>   <th colspan="2" align="left">Formulário para validação de campos.</th>  </tr>  <tr>   <td>Nome:</td>   <td><input type="text" name="txt.nome" size="30" class="txt"></td>  </tr>  <tr>   <td>Número:</td>   <td><input type="text" name="txt.numero" size="20" onkeypress="NumberOnly()" class="txt"></td>  </tr>  <tr>   <td>Endereço:</td>   <td><input type="text" name="txt.endereco" size="20" class="txt"></td>  </tr>  <tr>   <td>Data:</td>   <td><input type=text name="txt.data" size="10" onkeypress="FormataCampo(this,event,'##/##/####');NumberOnly()" maxlength="10" class="txt"></td>  </tr>  <tr>   <td>Moeda:</td>   <td><input type=text name="moeda" size="7" onkeypress="FormataCampo(this,event,'###,##');NumberOnly()" maxlength="6" class="txt" value="000,00" style="text-align:right"> <small>(Digite apenas valores monetareos.)</small></td>  </tr>  <tr>   <td colspan="2">Mensagem:</td>  </tr>  <tr>   <td colspan="2">    <textarea name="txt.teste" cols="40" rows="5" class="textarea"></textarea><br>    <script>     MostraLimite(document.frmteste.elements["txt.teste"],100) //frmteste = nome do form , txtteste = nome da textarea e 10 = quantidade de caracteres permitidos.    </script>   </td>  </tr>  <tr>   <td align="center"><input type="submit" name="btn" value="Enviar" class="btn"></td>   <td align="left"><input type="reset" name="btn_limpar" value="Limpar" class="btn"></td>  </tr> </table></form></body></html>

Por favor, tente fazer nesse arquivo, acho que fica mais fácil de você entender onde está o erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, Esse campo vai ser dinâmico, ou seja, meu sistema em Perl que vai criar, o limite (maxlenght) vai ser pego pelo tamanho através de uma consulta ao banco de dados. Então esse número pode ser variado, por isso preciso de alguma forma de bloquear, como se fosse com o maxlenght, mas somente os números que vierem após a vírgula.Acho que consegui ser claro!?

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.