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

Problema com submit em página com popup


Matheus Shake

Pergunta

Olá, estou com um problema que não estou conseguindo resolver.

Eu tenho uma página onde o usuário seleciona 1 opção em 3 <selects>.

Quando ele seleciona a opção do último select, ele abre uma popup com uma lista das opções possíveis e um checkbox do lado de cada uma para ele poder selecionar quais ele quer usar. Até aí tudo bem, só que depois disso, quando ele apertar ok na popup eu preciso enviar só o valor do checkboxs que ele selecionou para um hidden na página que o abriu e dar um submit na página que abriu a popup e depois fechar a popup.

Já tentei usar

window.opener.document.form1.submit();

mas ele dá submit na popup e ela vai para o caminho da página que a abriu.

Preciso disso urgente! :wacko:

Editado por Matheus Shake
Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0
tenta assim:

pagina filho:

&lt;script>
function Fechar() {
opener.document.frm1.submit();
self.close();
}
</script>
Continua não funcionando, o formulário da página pai é form1, e o código que estou usando é esse:
opener.document.form1.submit();

mas continua dando submit na popup.

Link para o comentário
Compartilhar em outros sites

  • 0
Deveria funcionar assim...

Você está abrindo a popup assim ?

open("sua_pagina")
Para conseguir enviar o valor dos selects para a popup,eu dou submit na página pai, com essa função:
function PegarDados(url) {
var janela = window.open("", "janela", "height=500, width=600, scrollbars=yes" );
form1.action = url;
form1.target = "janela";
form1.submit();
return true;
}
e no select:
<select name="nomedoselect" onchange="return PegarDados('nomedapopup.php');">

assim, quando eu dou submit no form1, ele envia os dados para a popup.

Link para o comentário
Compartilhar em outros sites

  • 0
Se o objetivo é que o formulário envie os dados para a página principal, e não a popup, remova essa linha:

form1.target = "janela";

Você não entendeu, esse código é para dar submit do formulário da página pai para a popup, enviando o valor dos 3 selects, depois eu preciso enviar o que o usuário selecionou na popup para a página pai e dar submit na página pai através da popup.

Editado por Matheus Shake
Link para o comentário
Compartilhar em outros sites

  • 0
Agora entendi...

Mas você consegue dar submit no formulário (mesmo sem criar o campo hidden) ou o problema está na criação desse campo

O problema com o hidden é que eu preciso colocar o valor dos campos que ele selecionou(checkboxs) em um array em javascript, isso eu já consegui, mas depois eu preciso serializar os valores desse array, e eu coloco no hidden com o código:

//selecionar_servico é o hiddden
window.opener.document.form1.selecionar_servico.value = variavel_com_os_valores;
Mas eu não sei como serializar um array em javascript, só em php, mas como passo um array de javascript para php? O outro problema é que quando eu uso esse código na página filho:
opener.document.form1.submit();
//ou
window.opener.document.form1.submit();

ele dá submit nela mesmo, não na página pai.

Editado por Matheus Shake
Link para o comentário
Compartilhar em outros sites

  • 0

Consegui resolver a parte da serialização, estava pesquisando e achei essa função:

function serializeArray(a)
{
var serializedString = '';
var arrayLength = 0;
for(var aKey in a)
{
//key definition
if(aKey * 1 == aKey) //is_numeric?
{
//integer keys look like i:key
serializedString += 'i:' + aKey + ';'; 
}
else
{
//string keys look like s:key_length:key;
serializedString += 's:' + aKey.length + ':"' + aKey + '";';
}

//value definition
if(a[aKey] * 1 == a[aKey])
{
//integer value look like i:value
serializedString += 'i:' + a[aKey] + ';'; 
}
else if(typeof(a[aKey]) == "string")
{
//string value look like s:key_length:value;
serializedString += 's:' + a[aKey].length + ':"' + a[aKey] + '";';
}
else if(a[aKey] instanceof Array)
{
serializedString += serializeArray(a[aKey]);
}
arrayLength++;
}
serializedString = 'a:' + arrayLength + ':{' + serializedString + '}';

return serializedString;
}

que faz a mesma coisa que o serialize() do php, então foi só passar essa variável para o php e deserializar, só resta a parte do submit na página pai pela página filho.

Editado por Matheus Shake
Link para o comentário
Compartilhar em outros sites

  • 0
Alguém pode ajudar essa criança sem instrução nenhuma...
Não são permitidos up's de acordo com a regra 3.8 (ver regras):
Não é permitida a postagem de mensagens com a finalidade de manter o tópico no início da lista (up), nem de mensagens que não se refiram ao assunto do tópico (flood). Caso isso ocorra, as mensagens serão excluídas e os autores, advertidos.
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,3k
×
×
  • Criar Novo...