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 Debian)

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.