Bom dia pessoal…
Tenho um input text para login no meu portal e preciso validar somente números.
Ontem andei dando uma estudada em javascript pois não conheço nada e fiz duas funções para isso.
A primeira testa cada tecla digitada e só deixa passar número.
A segunda chamo no onblur do input e ela percorre o conteúdo do mesmo deixando apenas os números. Fiz um teste em uma página HTML e as duas funcionam.
Então fui passar as funções para meu portal em XHTML e dá o seguinte erro:

O que poderia ser? Estou referenciando errado meu input? Ou é alguma incompatibilidade com o XHTML?
Aproveitando gostaria de perguntar outra coisa: na primeira função, no Firefox ela não permite o CTRL+C / CTRL+V. Qual seria o código dessas duas combinações de teclas? No IE CTRL+C / CTRL+V funcionam e gostaria que no Firefox também.
Segue as duas funções em Javascript (estão no ) :
<script language="JavaScript">
// <![CDATA[
function SomenteNumeros(e){
var tecla=(window.event)?event.keyCode:e.which;
if((tecla > 47) && (tecla < 58))
{
return true;
}
else{
if ((tecla==8) || (tecla==0))
{
return true;
}
else{
return false;
}
}
}
function ValidaCopia(textoInput) {
var texto = textoInput;
var resultado = "";
var indice = parseInt(0);
//Qual outra maneira de pegar os caracteres no intervalo de '0' a '9'?
for(indice ; indice < texto.length ; indice ++){
if ( (texto.charAt(indice) == '0') || (texto.charAt(indice) == '1') ||
(texto.charAt(indice) == '2') || (texto.charAt(indice) == '3') ||
(texto.charAt(indice) == '4') || (texto.charAt(indice) == '5') ||
(texto.charAt(indice) == '6') || (texto.charAt(indice) == '7') ||
(texto.charAt(indice) == '8') || (texto.charAt(indice) == '9') )
{
resultado = resultado + texto.charAt(indice);
}
}
//Essas duas linhas comentadas abaixo foram outras formas que tentei para fazer jogar o resultado para o input text
//document.forms["formulario"].elements["cnpjCpf"].value = resultado
//document.getElementById("cnpjCpf").value = resultado;
document.formulario.cnpjCpf.value = resultado;
}
// function teste() {
// alert("teste");
// }
// ]]>
</script>
Segue o código do form e o input:
<body>
<div id="site">
<f:view>
<form id="formulario" jsfc="h:form" target="_parent">
<label for="un">CNPJ/CPF:</label>
<input type="text" jsfc="h:inputText" id="cnpjCpf" name="cnpjCpf" value="#{credentials.username}" onkeypress="return SomenteNumeros(event);"
required="true" requiredMessage="Digite seu CNPJ/CPF!" onblur="ValidaCopia(cnpjCpf.value);" />
</form>
</f:view>
</div>
</body>