首页 > 解决方案 > 为什么我的表单在按 Enter 或使用条形码扫描仪时提交了两次?

问题描述

我已经尝试了所有方法,似乎只有在按下回车键或使用我想使用的条形码扫描仪时才会提交两次表单。单击“提交按钮”时不会发生我。起初我以为我执行了两次查询,但事实并非如此。这是我的代码:

HTML 文件

<form id="formulario_ingreso" class="form-horizontal" onsubmit="return ingresar();" method="POST">
<div class="row">
    <div class="col-sm-6">
        <div class="form-group">
            <div class="controls">
                <input id="codigo" type="number" name="codigo" class="form-control" placeholder="Código" autofocus>
            </div>
        </div>
    </div>
    <div class="col-sm-6">
            <div class="form-group">
                <select class="select2 form-control" id="nombre" name="nombre">
                <option value="">Nombre (Solo si no existe código)</option>
                <?php
                    while ($row = mysqli_fetch_assoc($perfiles_query)){
                        echo '<option value="'.$row["id"].'">'.$row["nombres"].' '.$row["apellidos"].'</option>';
                    }
                ?>
            </select>
        </div>
    </div>
</div>
<button type="button" class="btn btn-primary" onclick="ingresar()">Ingresar</button>
</form>

脚本文件

<script>
   $("#formulario_ingreso").submit(function(e) {
      e.preventDefault();
   });
</script>
<script>
   function ingresar(){
       var codigo = $("#codigo").val();
       var nombre = $("#nombre").val();
       if(codigo){

           $.post("evento/ingresar_asistencia.php", { codigo: codigo },
           function(data) {
                 $('#results').html(data);
                 $('#formulario_ingreso')[0].reset();
           });



       }else if(nombre){
           $.post("evento/ingresar_asistencia.php", { nombre: nombre },
           function(data) {
                 $('#results').html(data);
                 $('#formulario_ingreso')[0].reset();
           });
       }
    };

</script>

PHP文件

<?php
require_once '../../../config.php';

if(isset($_POST["codigo"])){
    $codigo = $_POST["codigo"];
    echo $codigo;

    $asistencia_query = mysqli_query($link, "INSERT INTO asistencia (id_perfil, id_evento) VALUES (2,1) ");

}

标签: javascriptphphtmlmysqlmysqli

解决方案


ingresar()我已经尝试过您的代码,但在我的情况下,当我单击按钮时,它是一次性调用功能。

onsubmit="return ingresar();"从您的表单标签中删除。我认为这是造成问题的原因


推荐阅读