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

Tá Dando Mensagem De Erro No Script Enter = Tab


RClotz

Pergunta

Olá!

Eu só copiei e colei o fonte que peguei do Crystian e mandei executar, e no depurador do Firefox deu essa mensagem de erro, e ele aponta na linha 45, onde ele faz o teste pra focalizar o próximo campo, quando ele entra na opção else aponta para onde está escrito "obj.focus".

Ele pula pro próximo campo normalmente, mas o problema é que ele faz com que de erro em outros scripts que coloquei. Será que tem como melhorar este trecho do código pra não dar erro?

Erro: [Exception... "'Permissão negada para ler a propriedade XULElement.selectedIndex' when calling method: [nsIAutoCompletePopup::selectedIndex]"  nsresult: "0x8057001e (NS_ERROR_XPC_JS_THREW_STRING)"  location: "JS frame :: file:///W:/TMP6i3f568w21.htm :: nextCampo :: line 45"  data: no]

Arquivo-fonte: file:///W:/TMP6i3f568w21.htm

Linha: 45

O código que peguei é esse:

<html>
<head>
<script language="JavaScript">
/*
Este script foi desenvolvido por Crystian Zini Valduga,
   com a finalidade de ajudar programadores web.
É muito fácil copiar, por isso respeite quem teve a idéia
   de fazê-lo. Amanha pode ser você no meu lugar.

   Abraço

   Bom proveito

   Crystian
*/
var campos = new Array();
// Função que adiciona os campos que vão receber o foco
function addCampos(nome){
campos[campos.length] = nome;
}
// Função que trata o evento do teclado.(Quando se clica no enter)
function enter(evt){
var ret = new Boolean(true);
   var tecla = (navigator.appName == 'Netscape') ? evt.keyCode : window.event.keyCode;
   var nome = (navigator.appName == 'Netscape')?evt.target.name: event.srcElement.name;
   var type = (navigator.appName == 'Netscape')?evt.target.type: event.srcElement.type;
   if(tecla == 13){
       if(type == "button") return true;
       ret = nextCampo(nome);
       return ret;
   }
   return ret;
}
// Função que passa o foco para o próximo campo.
function nextCampo(nome){
for(i=0; i< campos.length; i++){ //>
 if(campos[i]== nome){
           if(i==campos.length-1){
               obj = eval('document.forms[0].'+campos[0]);
               obj.focus();
               break;
           } else {
               obj = eval('document.forms[0].'+campos[i+1]);
               obj.focus();
               break;
           }
       }
   }
   return false;
}

// atribuição do manipulador ao evento
if(navigator.appName=="Netscape") document.onkeypress = enter;
else document.onkeydown = enter;
</script>
</head>
<body onload="javascript:{document.form.text.focus();}">
<form name="form" action="" method="">
<table align="center">
 <tr>
  <td>Campo 1:</td><td><input type="text" name="text" size="10"></td>
           <script language="javascript">addCampos('text');</script>
 </tr>
 <tr>
  <td>Campo 2:</td><td><input type="checkbox" name="check"></td>
           <script language="javascript">addCampos('check');</script>
 </tr>
    <tr>
  <td>Campo 3:</td>
           <td>
            <select name="select">
   <option value="1">Um</option>
   <option value="2">Dois</option>
   <option value="3">Três</option>
   </select>
  </td>
           <script language="javascript">addCampos('select');</script>
 <tr>
        <td colspan="2" align="center"><input type="button" name="button" value="enviar"></td>
           <script language="javascript">addCampos('button');</script>
</table>
<form>
</body>
</html>

valeu!

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Eu dei uma olhada e realmente não estava funcionando no firefox. O problema está no onload...

tira aquele "document.forms[0].text.focus()" do onload que vai funcionar... pode tirar o onload.... o problema é q o firefox pelo q vejo não deixa setar o foco em um campo no onload....

tenta colocar fora pra setar no primeiro... se mesmo assim não funcionar me avisa q dou uma olhada com mais calma....

Abraço

Crystian

Link para o comentário
Compartilhar em outros sites

  • 0

Eu fiz o que você pediu mas não deu certo.

Este script (ou o próprio Firefox) está com um bug quando um campo input 'text' perde o foco para passar para outro.

Quando se está em um checkbox ou outro objeto ele passa normalmente, mas quando é de uma caixa de texto para qualquer outro campo ele dá esse erro.

Eu havia apenas copiado o script que você colocou no FAQ e testei no firefox e percebi que mesmo sem fazer nenhuma outra alteração ele fez isso.

Fazendo uma pesquisa no google pelo código de erro que aparece no Console(0x8057001e), percebi que isso é um provavel erro Firefox... .

Justamente quando é executado a linha pra deixar o objeto seguinte de onde está focalizado em foco ele aparece este erro.

Quando passa pela linha de script escrito "obj.focus()".

Link para o comentário
Compartilhar em outros sites

  • 0

Como a mensagem refere-se a permissão, eu tentei usar esta linha descript mas ainda não consegui... ele ainda aparece erro, mas na linha deste script, enquanto na outra linha não aparece, e no browser ele pergunta se realmente deseja executar o script e tals.

netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");

Caso alguém conheça a melhor forma de utilizar este script ou eliminar o erro ou tenha outro script com o mesmo efeito....

valeu.

Link para o comentário
Compartilhar em outros sites

  • 0

É realmente o Firefox deve ter um bug, porque ele não deixa você usar o método ".focus()" num campo text. Esse script funciona em vários browsers, mas no firefox ele tah dando esse erro. Eu vou dar uma estudada na especificação do firefox e depois te retorno uma resposta mais clara...

Abraço

Crystian

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
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...