Arquivo . JS (externo)

2 respostas
paulovittor23
estou com um problema meio besta mas q está começando a consumir meu tempo aqui na empresa... tenho um arquivo .js e estou fazendo o import do msm em uma pagina para poder utilizar as funções deste arquivo. O problema é que dentro de uma função eu utilizo referencias ao form da página por exemplo:
var obj = eval('document.forms[0].elements[campo]);
sendo que recebo o nome do campo por parâmetro na função... a função é executada normalmente, mas qdo atribuo um valor para este campo (obj.value = 'teste';) esta linha da erro no console do js....ele não encontra esse campo... jah testei a função colokando ela diretamente na página e funciona perfeitamente... porém gostaria de deixá-la externa a página para ficar mais fácil de dar manutenção futuramente...

to mandando o código p vcs darem uma olhada :

// no .js
function FormataData(e,obj){
	var objeto = eval('document.forms[0].elements[

//na html
[code]
<form name="teste">
<input type="text" name="email" class="pequeno" maxlength="10" onKeyPress="FormataData(event, this.name)"/>
</form>

Se alguém puder dar uma mãozinha eu agradeço... :D ' + obj + '

//na html
<form name="teste">
<input type="text" name="email" class="pequeno" maxlength="10" onKeyPress="FormataData(event, this.name)"/>
</form>

Se alguém puder dar uma mãozinha eu agradeço... :D ]');
navegador = /msie/i.test(navigator.userAgent);
if (navegador){
var tecla = event.keyCode;
}else{
var tecla = e.which;
}
if(tecla > 47 && tecla < 58){ // numeros de 0 a 9
if(objeto.value.length == 2 || objeto.value.length == 5)
objeto.value += '/';
return true;
}else{
return(tecla == 8 || tecla == 9); // backspace e tab
}
}
[/code]

//na html
<form name="teste">
<input type="text" name="email" class="pequeno" maxlength="10" onKeyPress="FormataData(event, this.name)"/>
</form>

Se alguém puder dar uma mãozinha eu agradeço... :D

2 Respostas

J

Faça o seguinte, nesse seu arquivo .js externo você mantem a função sem nada fixo em relação ao forms, senão ela não será genérica.

Você pode passar para a função o endereço do campo dessa maneira, pois para esse evento não se faz necessário o forms:

onKeyPress="return FormataData(event,this)"

Lá na função do .js externo faça:

function FormataData(e,obj){ navegador = /msie/i.test(navigator.userAgent); if (navegador){ var tecla = event.keyCode; }else{ var tecla = e.which; } if(tecla > 47 && tecla < 58){ // numeros de 0 a 9 if(obj.value.length == 2 || obj.value.length == 5) obj.value += '/'; return true; }else{ return(tecla == 8 || tecla == 9); // backspace e tab } }

paulovittor23

Funcionou :smiley:
valeu msm pela ajuda…
8)

Criado 18 de setembro de 2006
Ultima resposta 18 de set. de 2006
Respostas 2
Participantes 2