Carlos Rocha Posted August 5, 2012 at 10:35 AM Report Share #471500 Posted August 5, 2012 at 10:35 AM (edited) Uma opinião: function valida_carrinho(form, itens) { with (form) { j=0; for (var i=0; i < (itens-1)*2; i++) { if (elements(j).value > elements(j+1).value) { alert('Observe um dos produtos do carrinho\nVocê adicionou '+elements(j).value+' \nPorem, só tem '+ elements(j+1).value); elements(j).focus(); return (false); } j=j+2; } form.submit(); } } Esse codigo funciona perfeitamente no ie. Mas no chrome e no firefox, o botão de submeter o form nem é acionado ao ser clikado. Mas, o mais estranho é que o firebug não mostra que tem erro. alguém tem alguma ideia de como contornar esse problema? Estou tentando resolver esse problema a algum tempo e não acho uma saída. Será que alguém pode me ajudar? A ideia é a seguinte: Para cada campo text que carrega a quantidade de itens no carrinho com id e name com números, eu crio um campo hidden que carrega a quantidade em estoque para aquele produto adicionado ao carrinho. De forma que não tem como eu saber o name do campo. Daí eu comparo o estoque com a quantidade que o cliente preencheu. Se a quantidade for maior que o estoque eu barro ele, exibo o alert, coloco o foco no campo e paro a execução do código. Detalhe: Essa numeração que forma o nome e a id do campo text, é a id do produto na base de dados{tabela mysql} Eu entendo pouco ainda e estou tendo um pouco de dificuldades de entender teu raciocínio. Obrigado! Edited August 5, 2012 at 03:34 PM by brunoais geshi! Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted August 5, 2012 at 10:47 AM Report Share #471502 Posted August 5, 2012 at 10:47 AM 1º - o acesso ao indice de um array é através dos parenteses rectos 2º - nunca tinha visto o uso do criador de contexto "with" no javascript ... de certeza que isso funciona ?? 3º - dizer que funciona no IE não é exemplo que se siga com confiança 4º - o firebug não reclamar de nada é algo que me faz comichão no nariz ... function valida_carrinho(form, itens) { j=0; for (var i=0; i < (itens-1)*2; i++) { if (form.elements[j].value > form.elements[j+1].value) { alert('Observe um dos produtos do carrinho\nVocê adicionou '+elements(j).value+' \nPorem, só tem '+ elements(j+1).value); form.elements[j].focus(); return (false); } j=j+2; } form.submit(); } IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Carlos Rocha Posted August 5, 2012 at 11:26 AM Author Report Share #471507 Posted August 5, 2012 at 11:26 AM 1) Tá certo. Entendi teu posicioamento. Mas acho que o ie entendeu meu erro e virou automaticamente para []. Hehe 2) Funciona. Funciona certinho. 3) Concordo! 4) Mas esta acontecendo sim. O problema é que, mesmo alterando para o teu codigo, o ie continua funcionando mas o firefox continua não funcionando nem mostrando erro. O botão enviar nem meche ao ser clikado no Firefox. Estou achando que form.documents não são reconhecidos pelo Firewfox. Não é istao não? Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted August 5, 2012 at 11:30 AM Report Share #471508 Posted August 5, 2012 at 11:30 AM eu acho que o problema está na chamada da função (algo que não apresentaste aqui ...) IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Carlos Rocha Posted August 5, 2012 at 11:34 AM Author Report Share #471509 Posted August 5, 2012 at 11:34 AM (edited) <input type="button" onclick="return valida_carrinho( this.form, <?php echo $_SESSION["MeuCarrinhoAltera"]->QuantosItens();?> )" value="Atualizar" name="Atualizar" WIDTH="78" HEIGHT="20" /><br> Ta ai. Como eu sei que são, o brigatoriamente gerados 1 campo text e um hidden para cada produtos então, tenho que a quantidade de produtos enviados ao carrinho é o segundo parametro da função Edited August 5, 2012 at 11:37 AM by carcleo Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted August 5, 2012 at 11:43 AM Report Share #471511 Posted August 5, 2012 at 11:43 AM isso não me diz nada, porque eu não vejo o javascript criado, que é o que interessa porque é o que não está a funcionar ... o melhor mesmo é dares o URL do site para se ver o que está a acontecer IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Carlos Rocha Posted August 5, 2012 at 11:51 AM Author Report Share #471512 Posted August 5, 2012 at 11:51 AM (edited) Olha só. Isso ainda esta offiline. Esta só local. Vou postar o html para tu dar uma olhada fazendo favor! Por favor, não arrepare. Sou inciante e obrigado pelo apoio. <form method="post" action="altera_carrinho.php?op=atualizar" id="form_carrinho" name="form_carrinho"> <table BORDER=0 WIDTH="95%" align="center"> <tr BGCOLOR="#0080C0"><td align="center" colspan="9">Pedido: 37</td></tr> <tr BGCOLOR="#004080"> <td align="center" width="30%">Produto</td> <td align="center" width="10%">Estoque</td> <td align="center" width="15%">PREÇO UNITÁRIO</td> <td align="center" width="15%">Quant.</td> <td align="center" width="15%">TOTAL</td> <td align="center" width="15%">EXCLUIR</td> </tr> <tr> <td align='left'><font size=-1>Doce de Menta</font></td> <td align='center'><font size=-1>20</font></td> <td align='center'>R$ 3.24 </td> <td align='center'> <input style="text-align:right" type="text" id="8" name="8" size="2" value="20" onkeypress="BloqueiaLetras();" /> <input type="hidden" id="hd8" name="hd8" value="20" /> </td> <td align='center'>R$ 64.80</td> <td align='center'><b> <a href="altera_carrinho.php?op=excluir&id_prod=8">Excluir</a> </b></td> </tr> <tr> <td align='left'><font size=-1>Pós de Mico Boa Sorte</font></td> <td align='center'><font size=-1>35</font></td> <td align='center'>R$ 2.33 </td> <td align='center'> <input style="text-align:right" type="text" id="7" name="7" size="2" value="20" onkeypress="BloqueiaLetras();" /> <input type="hidden" id="hd7" name="hd7" value="35" /> </td> <td align='center'>R$ 46.60</td> <td align='center'><b> <a href="altera_carrinho.php?op=excluir&id_prod=7">Excluir</a> </b></td> </tr> <tr> <td align="center" bgcolor="#66FF99" colspan="7"> Valor Total da Nota: R$ 111.40 </td> </tr> <tr> <td align="center" colspan="7"> <input type="button" onclick="return valida_carrinho(this.form,2)" value="Atualizar" name="Atualizar" WIDTH="78" HEIGHT="20" /><br> </td> </tr> </table> </form> Edited August 5, 2012 at 12:08 PM by carcleo Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted August 5, 2012 at 11:53 AM Report Share #471513 Posted August 5, 2012 at 11:53 AM carrega no botão de alternar o modo de edição do post e copia o código para dentro de tags [ code=html4strict] caso contrário vai ser complicado ler isso IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Carlos Rocha Posted August 5, 2012 at 12:07 PM Author Report Share #471515 Posted August 5, 2012 at 12:07 PM (edited) Taí Edited August 5, 2012 at 12:08 PM by carcleo Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted August 5, 2012 at 12:18 PM Report Share #471516 Posted August 5, 2012 at 12:18 PM as alterações que disse estão corretas, falta é alterar também na mensagem de erro function valida_carrinho(form, itens) { j=0; for (var i=0; i < (itens-1)*2; i++) { if (form.elements[j].value > form.elements[j+1].value) { alert('Observe um dos produtos do carrinho\nVocê adicionou '+form.elements[j].value+' \nPorem, só tem '+ form.elements[j+1].value); form.elements[j].focus(); return (false); } j=j+2; } form.submit(); } IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Carlos Rocha Posted August 5, 2012 at 02:05 PM Author Report Share #471531 Posted August 5, 2012 at 02:05 PM (edited) Então! Conerindo com calma meu código, à luz dos teus comentários, cheguei à conclusão que, o único(e decisivo) erro do meu código, era o uso do array elements(), da forma errada, quando a forma correta é, conforme a tua orientação, elements[]. ficou assim function valida_carrinho(form, itens) { with (form) { j=0; for (var i=0; i < (itens-1)*2; i++) { if (elements[j].value > elements[j+1].value) { alert('Observe um dos produtos do carrinho\nVocê adicionou '+elements[j].value+' \nPorem, só tem '+ elements[j+1].value); elements[j].focus(); return (false); } j=j+2; } form.submit(); } } Não sei porque o ie aceitou esse erro de script: elements(). Gostaria ainda perguntar tua opinião. O que seria mais correto e profissional fazer. with(form) { elements[] } Ou form.elements[] ? Haja vistas que tanto ie, chrome e Firefox entederam esse criador de contexto. Quero agradecer-te pelo apoio e paciência. Muito obrigado Edited August 5, 2012 at 02:07 PM by carcleo Link to comment Share on other sites More sharing options...
brunoais Posted August 5, 2012 at 03:47 PM Report Share #471537 Posted August 5, 2012 at 03:47 PM (edited) Gostaria ainda perguntar tua opinião. O que seria mais correto e profissional fazer. with(form) { elements[] } Ou form.elements[] Nenhum desses, var form = document.getElementById('IdDaTagForm'); form.childNodes[]; form. (...) Edited August 5, 2012 at 03:48 PM by brunoais "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%. Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted August 5, 2012 at 03:49 PM Report Share #471538 Posted August 5, 2012 at 03:49 PM se os browsers comem isso, porreiro, e deixa de haver solução correta ou errada. isso agora é gosto pessoal. eu considero que a segunda é mais fácil de ler, mas se gostas da primeira, tudo bem IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Carlos Rocha Posted August 5, 2012 at 03:50 PM Author Report Share #471539 Posted August 5, 2012 at 03:50 PM É. Mas aconteceu um imprevisto. Se houver apenas um produto no carrinho, a função não esta funcionando. Tem como corrigir esse erro? O botão de submit esta indo direto. Link to comment Share on other sites More sharing options...
Carlos Rocha Posted August 5, 2012 at 05:01 PM Author Report Share #471545 Posted August 5, 2012 at 05:01 PM (edited) Nova falta de atenção. i < (itens-1)*2 Se tiver apenas 1 produto no carrinho, fará: i < (1-1)*2I == i < (0)*2=0 Mas, como fazer do jeito que você disse: var form = document.getElementById('IdDaTagForm'); form.childNodes[]; form. (...) Se não tem como saber os names e ids que os campos receberão? Edited August 5, 2012 at 05:04 PM by carcleo Link to comment Share on other sites More sharing options...
Carlos Rocha Posted August 6, 2012 at 12:51 AM Author Report Share #471558 Posted August 6, 2012 at 12:51 AM Não. Isso não esta funcionando. Como é que eu conto quantos campos input type=text tem em um formulário? Link to comment Share on other sites More sharing options...
Carlos Rocha Posted August 6, 2012 at 01:16 AM Author Report Share #471559 Posted August 6, 2012 at 01:16 AM Novamente. Lógica errada. function valida_carrinho(form, itens) { with (form) { j=0; for (var i=0; i < itens; i++) { if (elements[j].value > elements[j+1].value) { alert('Observe um dos produtos do carrinho\nVocê adicionou '+elements[j].value+' \nPorem, só tem '+ elements[j+1].value); elements[j].focus(); return (false); } j=j+2; } form.submit(); } } Vou acabar aprendendo Javascript Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now