Avoid double-click and redirect to another page

2

Good afternoon! I made a function to prevent the user from pressing twice on the same button, this part works perfectly.

global.js

$('.form-disable').on('submit', function(){

var self = $(this),
button = self.find('input[type="submit"], button'),
submitValue = button.data('submit-value');

button.attr('disabled','disabled').val((submitValue) ? submitValue : "Aguarde...");
});

The problem is that it now no longer redirects to the next page. The button is for entering data into the database and for the user to be redirected.

comment.php    

<form method="POST" action="" class="form-disable">
        <table width="80%" align="center" cellpadding="8">
            <tr>
                <td colspan="1" class="logo">
                    <img src="../classif/Imagens/logo.png" height="40" width="150" style="max-width: 100%; height: auto;">
                </td>
                <td class="opiniao" align="right">

                </td>
            </tr>
            <tr>
                <td colspan="3" class="pergunta" align="center">
                    <div class="responsive_pergunta">
                        <hr>
                        Deixe aqui o seu comentário
                        <hr>
                    </div>
                </td>
            </tr>
            <tr>
                <td colspan="3">
                    <textarea rows="13" cols="165" name="textarea" id="textarea" placeholder=""></textarea>
                    <p class="num_restantes" style="text-align: right; color: #bfbfbf; padding-right: 80px;"><span id="caracteres_restantes">Limite de caracteres: 150</span></p>
                </td>
            </tr>
            <tr>    
                <td class="selecao">
                    <div class="cores">

                        <input type="submit" id="enviar" name="enviar" class="enviar" value="✓">
                    </div>
                    <?php
                    if (isset($_POST['enviar'])) {
                    //procura na tabela questionario o id da pergunta 'pergunta_id'
                        $procura = mysqli_query($link,"SELECT pergunta_id from questionario");
                        $registos_pergunta_id=mysqli_num_rows($procura);

                    //pegar pergunta_id da tabela questionario
                        while ($registos_pergunta_id!=0) {
                            $get_pergunta_id=mysqli_fetch_array($procura);
                            $registos_pergunta_id--;
                        }

                        $resposta = $_POST['textarea'];
                    //inserir os dados na tabela resposta
                        $inserir=mysqli_query($link,"INSERT INTO resposta (resposta_id, pergunta_id, resposta) VALUES ('','".$get_pergunta_id[0]."','$resposta')");
                        if (!$inserir) {
                        //caso os dados nao sejam inseridos na base de dados irá msotrar um erro a informar
                            echo "Erro ao inserir na base de dados";
                        }else
                        {
                        //se os dados forem inseridos na base de dados irá para a página agradecimento
                            header('location: agradecimento.php?id=1');
                        }
                    }
                    ?>
                    <td class="selecao" style="text-align: center;">
                        <div class="cores">
                            <input type="submit" name="desistir" class="desistir" value="X">
                            <?php
                            if (isset($_POST['desistir'])) 
                            {
                            //apagar o ultimo id inserido da tabela caso o utilizador desista da sua opçao
                                $apagar = mysqli_query($link,"delete from questionario order by pergunta_id desc limit 1");
                                if (!$apagar) {
                                    echo "Erro ao apagar o último registo inserido";
                                }else{
                                //redireciona novamente para a página principal
                                    header('location: index.php?id=1');
                                    exit();
                                }
                            }
                            ?>
                        </td>
                    </div>
                </td>
            </tr>   
        </table>
    </form>

Can anyone help me? Thank you!

    
asked by anonymous 22.06.2018 / 15:34

1 answer

1

Your return false prevents the form from being sent, so just remove it:

$('.form-disable').on('submit', function(){
 var self = $(this),
 button = self.find('input[type="submit"], button'),
 submitValue = button.data('submit-value'); 
 button.attr('disabled','disabled').val((submitValue) ? submitValue : "Aguarde...");
});

Header is not being redirected because headers have already been sent to do the redirect. You can resolve it by redirecting otherwise. With javascript , for example: in place of:

header('location: index.php?id=1');

Place:

echo "<script>window.location.href= 'index.php?id=1';";
    
22.06.2018 / 17:52