Chamar script mais de 1x numa mesma aplicação

6 respostas
A

Estou codando uma pág. web na qual funciona como se fosse um cadastro de usuário, mas no caso o usuário só faz requisições de suporte. Nessa página eu coloquei aquele “+” que ao clicar, o formulário é duplicado para que o usuário possa solicitar as requisições todas de 1x só.

Como no exemplo da foto acima, deixei só um campo pra fazer os testes, ao digitar o nome e clicar em “enviar”, o script gera um tópico em um sistema que é tipo um fórum com a requisição dele.

Quando eu clico em “+” aparece outro input do “Name:”, clonando o que ja existe pra que ele possa digitar outro nome.

A questão é, quero que cada input abra um ‘tópico’ diferente.

No primeiro input abriria 1 chamado com o nome digitado, no segundo input abriria um 2° chamado diferente do primeiro com o nome digitado e assim por diante… o problema é que quando clico em “enviar” o form action que ta chamando o script só reconhece o ultimo nome digitado, sendo assim, só abre um unico chamado com o último nome digitado.

Em resumo eu só queria que o script meio que se duplicasse e recebesse várias requisições…

Alguém tem uma ideia de como poderia ser feito?(caso necessário eu posto o código do script + página ou algo do tipo…)

6 Respostas

darlan_machado

Provavelmente você só está duplicando a estrutura, o que acarreta que todos os inputs terão o mesmo valor para a propriedade name.
Será necessário fazer com que cada input possua um identificador único e, além disso, creio que será necessário fazer o request via javascript, garantindo que os dados sejam organizados de forma adequada (json talvez)

A

Certo amigo, eu fiz de uma forma que pudesse ser identificado, no caso, impondo que os inputs fossem identificados através de um array em si, porém o script ainda sim não ta respondendo da forma como eu queria(que seria abrir vários tópicos com os nomes informados, no caso, ele só abre um tópico com o último nome informado).

Se quiser posso editar o tópico de uma forma mais detalhada com as partes do código em específico(referente ao input e ao script) caso facilite a forma de ajudar.

darlan_machado

Isso contradiz isso

Afinal, ao processar uma requisição, o último componente com o nome igual a um grupo de componentes é o que vai ter o valor associado a ele considerado.
Exemplo:

<input type="text" name="bla">
<inpu type="password" name="bla">
<input type="radio" name="bla">
<textarea name="bla">

O valor enviado será o do textarea, independente de haver um valor definido nele ou não.

A

Mas sendo colocado tipo "<input type="text" name="Nome[]">
não fica sendo uma forma de identificação por array no script em php?

darlan_machado

Posta o teu código.

A

Em partes:

Há o script no qual faz a duplicação dos inputs(caso o usuário clique no “+”, surgirá mais inputs para que seja feita mais de 1 requisição por vez).
Ficando de tal forma:

<script>

function duplicarCampos(){
        var clone = document.getElementById('origem').cloneNode(true);
        var destino = document.getElementById('destino');
        destino.appendChild (clone);

        var camposClonados = clone.getElementsByTagName('input');

        for(i=0; i<camposClonados.length;i++){
                camposClonados[i].value = '';
        }



}

function removerCampos(id){
        var node1 = document.getElementById('destino');
        node1.removeChild(node1.lastChild);
}
</script>
<!--
FECHAMENTO SCRIPT DE ADICIONAR/REMOVER DIV/input
-->

até aqui, tudo certo, a duplicação é feita… então, segui a dica de
identificar os inputs com array, ficando de tal forma a parte do input
em si:

<div id="origem">

Nome completo:<input name="nomeCompleto[]" id="nomeCompleto" type="text">

</div>

Seguindo adiante, fiz a alteração no código do php, colocando um
foreach pra leitura do array, ficando de tal forma:

if(isset($_POST['nomeCompleto'])){
        $nomeC = $_POST['nomeCompleto'];


foreach($_POST["nomeCompleto"] as $NameC)
    {
        echo "- " . $NameC . "<BR>";
    }




}

Logo, a região que recebe a variável “$nomeCompleto” esta em json(que
é a forma como a API do fórum realiza a leitura e etc… por isso em
json):

$input='{ "input": {
        "name": "'.$title.' '.$i.'",
        "content": "<b>NOME</b>: '.$NameC.'<br><b>CPF</b>: teste<br><b>Secretaria</b$
                        "status":"4",
                        "urgency":"1",
                        "priority":"4",

Fiz o teste tanto como “$NameC” como “$nomeCompleto” e ele só abre um tópico com o último nome digitado, porém, ao clicar no botão de enviar ele me retorna os valores digitados(certamente é um sinal de que a leitura do array ta sendo feita de forma certa), me apresentando a tela da seguinte forma:

e no “fórum” fica de tal forma

que no caso, é o sinal que abriu só o tópico referente ao ultimo nome digitado e não a todos digitados ):

Criado 8 de janeiro de 2020
Ultima resposta 8 de jan. de 2020
Respostas 6
Participantes 2