Ir para conteúdo
Fórum Script Brasil
  • 0

Script Com Comportamento Diferente Em Ie/firefox


$Xand$

Pergunta

Pessoal, fiz o download de um script no repositório daqui, para fazer a máscara de valores monetários:

<html>
<head><title>Mascara</title>
<script LANGUAGE="JavaScript">
function currencyFormat(fld, milSep, decSep, 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;  // Enter
key = String.fromCharCode(whichCode);  // Get key value from key code
if (strCheck.indexOf(key) == -1) return false;  // Not a valid key
len = fld.value.length;
for(i = 0; i < len; i++)
if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
aux = '';
for(; i < len; i++)
if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);
aux += key;
len = aux.length;
if (len == 0) fld.value = '';
if (len == 1) fld.value = '0'+ decSep + '0' + aux;
if (len == 2) fld.value = '0'+ decSep + aux;
if (len > 2) {
aux2 = '';
for (j = 0, i = len - 3; i >= 0; i--) {
if (j == 3) {
aux2 += milSep;
j = 0;
}
aux2 += aux.charAt(i);
j++;
}
fld.value = '';
len2 = aux2.length;
for (i = len2 - 1; i >= 0; i--)
fld.value += aux2.charAt(i);
fld.value += decSep + aux.substr(len - 2, len);
}
return false;
}
</script>
</head>
<body>
<form>Defina o Valor em Reais : <input type=text name=test length=15 onKeyPress="return(currencyFormat(this,',','.',event))">
</form>
</body>
</html>

Realmente achei o código muito legal, era exatamente oque eu precisava. Entretanto, gostaria de saber por que não consigo usar backspace, delete ou as setas do teclado no input, quando ele é carregado no Firefox (provavelmente tem a ver com o tratamento de eventos?), e se possível uma solução cross-browser com as mesmas funcionalidades é também muito bem vinda.

[ ]'s

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

opa

cara eu não entendo nada de javascript, mas por lógica de programação,

você pode talvez fazer o que você quer nessa parte:

Aqui ele filtra se o usuário apertou o Enter então ele deixa passar: "return True"
if (whichCode == 13) return true;
13 é o caracter ASCII referente ao Enter, então a lógica é, se você jogar os caracteres ASCII para as teclas que deseja "talvez" funcione! exemplo, como usa um OR em javascript? Ai vai os caracteres ASCII para as teclas que você mencionou: Backspack - 8 Delete - 46 Seta esquerda - 37 Seta direita - 39 Então o que você teria a fazer é tipo
if (whichCode == 13) OR? (whichCode == 8) 
OR? (whichCode == 46) OR? (whichCode == 37) 
OR? (whichCode == 39) return true;

troque o OR? pelo operador usado pra OR em javascript...

talvez tenha um jeito melhor de se fazer isso rsr...

não sei se vai funcionar, mas pela lógica pode ser que sim rs

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

OR em javascript é ||

opa

então supostamente seria

if (whichCode == 13) || (whichCode == 8) || (whichCode == 46)
|| (whichCode == 37) || (whichCode == 39) return true;
deve ter um jeito mais fácil de ser fazer, em delphi seria tipo
Result := (wichCode in [13,8,46,37,39]) ou
case withCode of
13,18,46,37,39: Result := True;
end;

bom espero que de certo :D

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado pelas sugestões, já amenizaram muito o problema, por que o FF já entende o "backspace" que é com certeza o mais importante no esquema. Entretanto as outras ainda não rolam, caso alguém quiser se manifestar..

Você chegou a testar o código com as teclas ASCII das demais teclas fora o backspace?

abs

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...