Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Carcleo

[Resolvido] Js não funciona no FireFox nem no Chrome

Recommended Posts

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();
			  exit;
		  }     				
		  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?

 

É o seguinte:

 

Na minha função, eu tenho o value do primeiro campo criado assim:

alert(document.getElementsByName('cor[]').item(0).value); 

Só que eu preciso saber, qual o value do campo(radio button) que foi selecionado e não do campo 0.

 

Como fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal.

 

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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O form.elements até onde sei é um array e não uma função ou método. Tente substituir:

 

elements(j) // Método???

Por:

 

elements[j].value // Array

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claro.

 

Mas veja só.

 

Essa funçaão funciona normal no internet explorer. Mas, no chorme e no Firefox não.

 

Se observar, isso que você postou, esta sendo usado muito na função.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oh meu Deus!

 

Código exige atenção. Muiiiiiiiita atenção.

 

Todos estavamos "comendo mosca".

 

form.elements é um vetor e não uma função.

 

Então, o correto seria form.elements[] e não form.elements().

 

Resolvido. O código 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();
   }
}

Obrigado a todos que contribuiram com respostas e principalmente ao memebro HappyHippyHippo do forum Portugal a programar.

 

Mas fica a dúvida:

 

 

O que seria mais correto e profissional fazer.

with(form)
{
elements[]
}

Ou

form.elements[]

?

 

O Claiton B G também havia comentado. Porem, como ele fez referencia a value na forma correta, e minha cabeça estava fervendo na hora, não consegui entender direito e me confundi.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É.

 

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.

 

Resolvido!

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não.

 

Isso não esta funcionando.

 

Como é que eu conto quantos campos input type=text tem em um formulário?

 

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.