Múltiplos submits para um form. [RESOLVIDO]

1. Múltiplos submits para um form. [RESOLVIDO]

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 09/03/2018 - 19:01h

Preciso utilizar dois botões submit para um form. Já tentei com dois buttons:

<input type='button' value='botao1' onclick=submitForm('php/grava1.php') />
<input type='button' value='botao2' onclick=submitForm('php/grava2.php') />
<script>
function submitForm(source){
document.id_do_form.action = source;
document.id_do_form.submit();
}
</script>

Dá certo mas o formulário não é validado, é enviado em branco ou com valores inválidos.

Tentei com dois submits:

<input type='submit' value='botao1' onclick=submitForm('php/grava1.php') />
<input type='submit' value='botao2' onclick=submitForm('php/grava2.php') />
<script>
function submitForm(source){
document.id_do_form.action = source;
document.id_do_form.submit();
}
</script>

Deste modo se eu clico no botao1 e dando erro de validação, não envia, mas se em seguida clicar no botao2, envia para o arquivo grava1.php (que deveria ser enviado pelo botao1) sem validar. Ou seja, os botões submit ficam misturados.

Não sei mais o que fazer.


  


2. MELHOR RESPOSTA

Buckminster
Buckminster

(usa Debian)

Enviado em 09/03/2018 - 22:11h

https://nandovieira.com.br/multiplos-botoes-submit-em-um-formulario

https://forum.imasters.com.br/topic/367920-resolvido%C2%A02-bot%C3%B5es-submit-para-o-mesmo-form/

"Envia os dados, mas não valida os campos. Continua enviando campos em branco mesmo com required."

Posta aqui uma parte do código desse form.

Edit: Tu pode colocar os submit dentro de uma DIV dentro do form:

<div id="posicao-botao">
<button class="botao" type="submit" id="inserir" name="inserir" value="Inserir" formaction="/syslogin/recibo/cadrecREC.php">Cadastrar</button>
<button class="botao" type="submit" id="alterar" name="alterar" value="Alterar" formaction="/syslogin/recibo/updaterecREC.php">Alterar</button>
</div>

Funciona perfeitamente.

Existem várias formas de fazer.

Até porque tu está usando input type como botão e esta prática não é aconselhável. Input type deve se utilizar para campos onde se insere(input) texto.

https://www.w3schools.com/html/html5_intro.asp

Ou tu pode utilizar input type=submit, mas separado dos input type=text:

https://www.w3schools.com/html/html_form_input_types.asp

Veja abaixo o button type:

<button type="button" onclick="alert('Hello World!')">Click Me!</button>

https://www.w3schools.com/html/html_form_elements.asp

Isto é divertido. Eu posso fazer isto a noite inteira, mandar códigos e links, mas paro por aqui.
Qualquer coisa que tu se apertar a partir de agora, veja o site https://www.w3schools.com/html/default.asp sobre HTML5. Ali tu acha também sobre CSS, Javascript, SQL, PHP, etc.

3. Re: Múltiplos submits para um form.

Ruan
ru4n

(usa Linux Mint)

Enviado em 09/03/2018 - 21:58h

Tenta dessa forma:
<form id="form1" action="" method="POST">
...
...
...
<input type='button' value='botao1' onclick="submitForm('php/grava1.php')" />
<input type='button' value='botao2' onclick="submitForm('php/grava2.php')" />
</form>
<script>
function submitForm(source) {
let elm = document.getElementById('form1');
elm.setAttribute('action', source);
elm.submit();
}
</script>

--
Talk is cheap. Show me the code - LT
Linux Counter: #596371


4. Re: Múltiplos submits para um form. [RESOLVIDO]

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 09/03/2018 - 22:10h

Funcionou do mesmo jeito que fiz no primeiro exemplo:

<form action='' method='POST' name='form>
...
<input type='button' value='botao1' onclick=submitForm('php/grava1.php') />
<input type='button' value='botao2' onclick=submitForm('php/grava2.php') />
...
</form>
<script>
function submitForm(source){
document.form.action = source;
document.form.submit();
}
</script>

Envia os dados, mas não valida os campos. Continua enviando campos em branco mesmo com required.


5. Re: Múltiplos submits para um form. [RESOLVIDO]

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 09/03/2018 - 22:56h

Valeu pela ajuda.
Consegui solucionar com o post do Marlon, nesse furum: http://phpbrasil.com/phorum/read.php?1,54483
Fiz da seguinte maneira no HTML:

<form action='enviar_form.php' method='POST>
...
<input type='submit' name='msg' value='url1' />
<input type='submit' name='msg' value='url2' />
</form>

e no enviar_form.php fiz assim:

<?php
$msg = $_POST["msg"];
switch($msg){
case 'url1':
include("url_do_scrip_1.php");
break;
case 'url2':
include("url_do_scrip_2.php");
break;
}
?>

Esse arquivo PHP auxiliar redireciona para o .php desejado conforme o confirm escolhido, validando o formulário antes de enviar.
Não sei se é uma boa prática ou se é uma gambiarra, mas funciona muito bem.


6. Re: Múltiplos submits para um form.

Buckminster
Buckminster

(usa Debian)

Enviado em 09/03/2018 - 22:59h

É uma boa prática. Está de acordo com o primeiro link que te enviei. Evite mudar o action do form com javascript. Utilize javascript somente para o estritamente necessário.

Qualquer coisa que tu se apertar a partir de agora, veja o site https://www.w3schools.com/html/default.asp sobre HTML5. Ali tu acha também sobre CSS, Javascript, SQL, PHP, etc.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts