Pessoal,
Tenho uma aplicação que entro dados num form e que com uma função javascript do tipo máscara, faz com que os dados digitados sejam apenas numéricos.
No IE, tudo funciona perfeitamente.
Porém no Firefox, a caixa texto do form não aceita qualquer caracter ser digitado, inclusive numérico.
Estou utilizando o event.keycode para o IE e event.which para o Firefox.
Alguém sabe o que pode estar errado?
Seguem os códigos:
HTML:
# <tr align="left" valign="middle">
# <td width="135">Nº</td>
# <td width="209">
# <html:text property="numeroS"
# styleClass="input"
# size="30"
# onkeypress="return keyPressed(this,event);" />
# </td>
# </tr>
Funções Javascript:
1. function keyPressed(param,event){
2. document.forms[0].numeroS.maxLength = 10;
3. return Mascara(document.forms[0], 'numeroS', '9999999999', event);
4. }
5.
6. function Mascara(a, strField, sMask, s) {
7. var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;
8. objForm = document.forms[0];
9.
10. if(document.all) { // Internet Explorer
11. nTecla = event.keyCode;
12. }
13. else {
14. nTecla = event.which;
15. }
16.
17. if(nTecla == 39) return false;
18.
19. //sValue = objForm[strField].value;
20. sValue = document.getElementById('strField').value;
21.
22. // Limpa todos os caracteres de formata��o que
23. // j� estiverem no campo.
24. sValue = sValue.toString().replace( "-", "" );
25. sValue = sValue.toString().replace( "-", "" );
26. sValue = sValue.toString().replace( ".", "" );
27. sValue = sValue.toString().replace( ".", "" );
28. sValue = sValue.toString().replace( "/", "" );
29. sValue = sValue.toString().replace( "/", "" );
30. sValue = sValue.toString().replace( "(", "" );
31. sValue = sValue.toString().replace( "(", "" );
32. sValue = sValue.toString().replace( ")", "" );
33. sValue = sValue.toString().replace( ")", "" );
34. sValue = sValue.toString().replace( " ", "" );
35. sValue = sValue.toString().replace( ":", "" );
36. sValue = sValue.toString().replace( ",", "" );
37. sValue = sValue.toString().replace( "$", "" );
38. sValue = sValue.toString().replace( "R", "" );
39. fldLen = sValue.length;
40. mskLen = sMask.length; // = 5
41.
42. i = 0;
43. nCount = 0;
44. sCod = "";
45. mskLen = fldLen;
46.
47. while (i <= mskLen) {
48. bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/"));
49. bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "));
50. bolMask = bolMask || ((sMask.charAt(i) == ":") || (sMask.charAt(i) == "$") || (sMask.charAt(i) == "R") || (sMask.charAt(i) == ","));
51.
52. if (bolMask) {
53. sCod += sMask.charAt(i);
54. mskLen++; }
55. else {
56. sCod += sValue.charAt(nCount);
57. nCount++;
58. }
59.
60. i++;
61. }
62.
63. objForm[strField].value = sCod;
64.
65. if (nTecla != 8) { // backspace
66. if (sMask.charAt(i-1) == "9") { // apenas n�meros...
67. return ((nTecla > 47) && (nTecla < 58)); } // n�meros de 0 a 9
68. else { // qualquer caracter...
69. return true;
70. } }
71. else {
72. return true;
73. }
74. }