Jump to content
Fórum Script Brasil
  • 0

Script Com Comportamento Diferente Em Ie/firefox


$Xand$
 Share

Question

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 to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649k
×
×
  • Create New...