Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 17

Erro com Tratamento subcat.options is undefined

20-06-2009 18:55

Galera mais um problema,

Tenho um arquivo que trata as chamadas que uma biblioteca ajax faz, mas na hora do tratamento ele retorna o seguinte erro:

subcat.options IS undefined subcat.options.LENGTH = 0;

o tratamento está assim:

function trataProduto()     {       subcat = document.forms[0].produto;       subcat.options.length = 0; //AQUI ESTÁ O ERRO!!!!       subcat.options[0] = new Option("Carregando...","teste");       if (ajax.readyState == 4) {         subcat.options.length = 0;                results = ajax.responseText.split(",");         subcat.options[0] = new Option( "Selecione", "selecione" );        for( i = 0 ; i < results.length; i++)         {           string = results[i].split( "|" );           subcat.options[1+i] = new Option( string[0], string[1] );         }               }     }

O arquivo PHP está assim:

<form>   <table width="100%" border="1" id="tabelaitem">     <tr>       <td width="10%" scope="col">Categoria</td>       <td width="21%" scope="col">Produto</td>     </tr>  //1º LINHA COM SELECT'S   <tr>     <td>     <select name="categoria" id="categorias" onchange="Javascript:requisicaoHTTP('GET','query_produto.php?cat=1',true,trataProduto)";><option selected="selected" value="0">Selecione</option><option value="1">Bovina</option><option value="2">Suina</option><option value="3">Avina</option><option value="4">Ovina</option></select>     </td>     <td>      // Desconfio que aqui está o problema esse ID está igual a próxima linha da tabela     <select id="produto" name="produto" onchange="Javascript:requisicaoHTTP('GET','query_tipo.php?idprod=1',true,trataTipo)";></select>     </td> </tr>  //2º LINHA COM AS SELECT'S IGUAIS A DE CIMA   <tr>     <td>     <select name="categoria" id="categorias" onchange="Javascript:requisicaoHTTP('GET','query_produto.php?cat=1',true,trataProduto)";><option selected="selected" value="0">Selecione</option><option value="1">Bovina</option><option value="2">Suina</option><option value="3">Avina</option><option value="4">Ovina</option></select>     </td>     <td>    // Desconfio que aqui está o problema esse ID está igual a linha de cima da tabela.     <select id="produto" name="produto" onchange="Javascript:requisicaoHTTP('GET','query_tipo.php?idprod=1',true,trataTipo)";></select>     </td> </tr>

Estranho que assim, quando isolo/retiro a 2º LINHA, a requisição e o tratamento são feitos perfeitamente, e os dados são retornados corretamente.

Mas acontece que preciso de várias linhas com campos iguais um embaixo do outro !!!

Que erro doido é esse? Será que é porque estou dando o mesmo ID para os dois campos "PRODUTO" ??? Tentei algumas formas e não tive sucesso ainda!

[]'s,
Agradeço desde já
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17680
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Erro com Tratamento subcat.options is undefined

20-06-2009 19:02

Pelo que ví

subcat = document.forms[0].produto; subcat.options.length = 0; //AQUI ESTÁ O ERRO!!!!

Essa linha está relacionada ao campo "name" produto

Não está passando mais que um, ou chamando a função sem passar o valor dele?
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 17

Erro com Tratamento subcat.options is undefined

20-06-2009 19:17

Passando valor está, mas como estou colocando dois campos com mesmo NAME, será que ele está confundindo e não pegando nenhum dos dois ??

O duro que se for isso to em uma roubada porque ai como vou tratar campos individuais, e se eu precisar de 5 campos?? Precisaria mudar todo o arquivo de tratamento cada campo..aff....deve ter alguma solução, me parece que ele havia funcionado assim dessa mesma forma, com campos de NAMES de mesmo nome.

..
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17680
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Erro com Tratamento subcat.options is undefined

20-06-2009 19:41

Você pode definir para que campo será a solicitação, usando o elements

Estuda esse script

<script> function mostra(var1,var2) { alert(document.form.elements[var1].value) } </script>


<form name="form"> <select name="select" onchange="mostra(this.name,this.value)"> <option></option> <option value="valor">valor</option> </select> </form>

Note que no alert eu pego o value que estou passando pela função (this.name)

O alert é como se fosse: document.form.select.value

Só que o select é passado no onchange, na função.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 17

Erro com Tratamento subcat.options is undefined

20-06-2009 19:56

é isso mesmo, agora preciso de uma ajuda para sair dessa...

preciso de ajuda para essa função tratar mais de 2 campos SELECT's com mesmo NAME(produto). Tem como fazer um ARRAY com esses campos e ele fazer o tratamento somente daquele solicitado no momento ?

 function trataProduto()     {           subcat = document.forms[0].produto; //aqui está o problema, no form existe 2 campos produto.           for (i = 0; i < form.length; i++){                 if (form[i].checked) {                 alert(form[i]);                 }           }       subcat.options.length = 0;       subcat.options[0] = new Option("Carregando...","teste");       if (ajax.readyState == 4) {         subcat.options.length = 0;                results = ajax.responseText.split(",");         subcat.options[0] = new Option( "Selecione", "selecione" );        for( i = 0 ; i < results.length; i++)         {           string = results[i].split( "|" );           subcat.options[1+i] = new Option( string[0], string[1] );         }                         }       }

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17680
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Erro com Tratamento subcat.options is undefined

20-06-2009 20:14

Se é necessário ter 2 names iguais, usa um ID, e passa o id pela função do onchange
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 17

Erro com Tratamento subcat.options is undefined

20-06-2009 21:52

To quase lá,

estou passando por parametro o Name do campo para o tratamento.
Assim:

    <td><select name="categoria"  onchange="Javascript:requisicaoHTTP('GET','query_produto.php?cat='+this.value,true,trataProduto('produto'));"> //trataProduto('produto') o campo 'produto' é o que deve ser tratado ao usar o onchange

ai vem o problema, demorei muito tempo para conseguir receber esse parametro de uma forma que o document.form[0].parametro conseguisse receber, e ainda não deu certo.....
está certo dessa forma:

        function trataProduto(var1)     {       subcat = document.forms[0].elements[var1]; // <- AQUI?? ESTÁ CERTO RECEBER O PARAMETRO DESSA FORMA ??       subcat.options.length = 0;       subcat.options[0] = new Option("Carregando...","teste");       if (ajax.readyState == 4) { // <-- DEPOIS QUE COLOQUEI PARA RECEBER POR PARAMETRO O ERRO ESTÁ NESSA LINHA AGORA!         subcat.options.length = 0;              results = ajax.responseText.split(",");         subcat.options[0] = new Option( "Selecione", "selecione" );        for( i = 0 ; i < results.length; i++)         {           string = results[i].split( "|" );           subcat.options[1+i] = new Option( string[0], string[1] );         }               }     }  

Tomara que seja por esse caminho mesmo..
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17680
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Erro com Tratamento subcat.options is undefined

20-06-2009 22:06

Parece certo, mas eu to vendo no seu onchange, você chama uma função requisicaoHTTP() mas, no script chama outra function trataProduto(var1)
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 17

Erro com Tratamento subcat.options is undefined

20-06-2009 22:17

exato, também pensei nisso, poder atrapalhar o funcionamento da função requisicaoHTTP(), bom vou postar ela de qq forma..
Mas é que não vejo outra forma, vou dar nome aos Select's de 'produto', produto1,produto2 etc, recebendo pelo parametro esses nomes iria funcionar direitinho..mas se for atrapalhar o resto prefiro pensar em outra coisa..

    // JavaScript Document     var ajax;     var dadosUsuario;       function requisicaoHTTP(tipo,url,assinc,trata,var1)     {        if(window.XMLHttpRequest){        ajax = new XMLHttpRequest();        }        else if(window.ActiveXObject){        ajax = new ActiveXObject("Msxml2.XMLHTTP");                if(!ajax){           ajax = new ActiveXObject("Microsoft.XMLHTTP");           }        }         if (ajax)       iniciaRequisicao(tipo,url,assinc,trata,var1);     else     alert("Seu navegador não possui suporte a essa aplicação");     }       function iniciaRequisicao(tipo,url,bool,trata,var1){           ajax.onreadystatechange=trata;           ajax.open(tipo,url,bool,trata,var1);           ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; Charset=UTF-8");           //ajax.overrideMimeType("text/XML");           ajax.send(dadosUsuario);     }       function enviaDados(url){     criaQueryString();     requisicaoHTTP("POST",url,true);     }       function criaQueryString(){        dadosUsuario="";        var frm = document.forms[0];        var numElementos = frm.elements.length;        for(var i=0; i < numElementos; i++){           if(i < numElementos-1){              dadosUsuario += frm.elements[i].name+"=" +              encodeURIComponent(frm.elements[i].value)+"&";              }else{              dadosUsuario += frm.elements[i].name+"=" +              encodeURIComponent(frm.elements[i].value);                         }        }     }

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17680
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Erro com Tratamento subcat.options is undefined

20-06-2009 22:30

Blz, já que vai nomear os selects pode criar ifs, assim dependendo do name você faz uma ação.
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado