Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

No funciona el botón "submit" en un formulario PHP

27 de noviembre de 2015

Hola buenos días.

Tengo un formulario que va en un modal. Si inicio el formulario solo en un navegador, me funciona perfecto pero cuando lo llamo a traves del modal el boton submit no hace nada. Bueno lo unico que hace es cerrar el modal. Adjunto código:

echo '<div class="modal-header">
 
        <h4 class="modal-title">Autorización de Matrículas</h4>
    </div>
<div class="col-sm-2">&nbsp;</div>
<div class="col-sm-3">&nbsp;</div>
 
 <div class="modal-body">
            <form name="formcontract" method="post" action="autorizar.php" class="form-horizontal">
 
                    <div class="form-group">
                            <label class="col-sm-3 control-label" for="formGroup">Matrícula</label>
                              <div class="input-group col-sm-5">
                                <span class="input-group-addon"><span class="fa fa-keyboard-o"></span></span>
                              <input class="form-control" type="text" name="matricula"id="formGroup" placeholder="AAA1234">
 
                            </div>
                        </div>  
<div class="col-sm-12">&nbsp;</div>
<div class="col-sm-12">&nbsp;</div>
                    <div class="form-group">
                            <label class="col-sm-3 control-label" for="formGroup">Matrícula Remolque</label>
                              <div class="input-group col-sm-5">
                                <span class="input-group-addon"><span class="fa fa-keyboard-o"></span></span>
                              <input class="form-control" type="text" name="matricular"id="formGroup" placeholder="AAA1234">
 
                            </div>
                          </div>    
<div class="col-sm-12">&nbsp;</div>
<div class="col-sm-12">&nbsp;</div>                     
                    <div class="form-group">
                            <label class="col-sm-3 control-label" for="formGroup">Identificación Chofer</label>
                              <div class="input-group col-sm-5">
                            <span class="input-group-addon"><span class="fa fa-credit-card"></span></span>
                              <input class="form-control" type="text" name="dni" "id="formGroup" placeholder="DNI o PASAPORTE  ">
                                </div>
                        </div>
<div class="col-sm-12">&nbsp;</div>
<div class="col-sm-12">&nbsp;</div>                                 
                    <div class="form-group">
                            <label class="col-sm-3 control-label" for="formGroup">Chofer</label>
                              <div class="input-group col-sm-5">
                            <span class="input-group-addon"><span class="entypo-user"></span></span>
                              <input class="form-control" type="text" name="xofer" id="formGroup" placeholder="Nombre y Apellido">
                                </div>
                        </div>
<div class="col-sm-12">&nbsp;</div>
<div class="col-sm-12">&nbsp;</div>
    <div class="form-group">
                            <label class="col-sm-3 control-label" for="formGroup">P.M.A</label>
                              <div class="input-group col-sm-5">
                            <span class="input-group-addon"><span class="entypo-download"></span></span>
                              <select name="pma" class="selectboxit">
                              <option>40.800</option>
                              <option>41.000</option>
                              <option>44.000</option>
                              </select>
 
                                </div>
                        </div>
 
                                </div>
        <div class="modal-footer">
        <button class="btn btn-success" name="button" data-dismiss="modal">Ok</button>
 
                            </div>
</form>';

Respuestas

#1

A lo mejor la causa es el problema de sintaxis que tienes en el código HTML que generas.

Esta línea:

<input class="form-control" type="text" name="dni" "id="formGroup" placeholder="DNI o PASAPORTE">

Debería ser:

<input class="form-control" type="text" name="dni" id="formGroup" placeholder="DNI o PASAPORTE">

@javiereguiluz

27 noviembre 2015, 10:50
#2

he corregido lo que me comentas y sigue igual

@javierecompring

27 noviembre 2015, 11:05
#3

Estaba revisando de nuevo el código y he visto que no tienes un botón "submit" en el formulario. El botón que has puesto (<button class="btn btn-success" name="button" data-dismiss="modal">Ok</button>) es el que se utiliza para cerrar las ventanas modales (por eso tiene el atributo data-dismiss="modal").

La solución sería añadir un botón "submit" de verdad:

<input class="btn btn-success" name="enviar" type="submit" value="Enviar" />

@javiereguiluz

27 noviembre 2015, 14:50
#4

Si rienes toda la razón pero ahora le doy al nuevo botón y no hace nada.

@javierecompring

27 noviembre 2015, 15:46
#5

Así es como quieres que funcione?

http://jsfiddle.net/iBet7o/8hsqvq0x/

@iBet7o

27 noviembre 2015, 22:29
#6

SI asi estaria bien !

@javierecompring

30 noviembre 2015, 10:16
#7

Pero sigue sin funcionar he copiado el ejemplo y nada

@javierecompring

30 noviembre 2015, 15:03
#8

No tienes una link que nos pases para ver cual es el error?

@iBet7o

30 noviembre 2015, 21:58
#9

No no tengo link porque es un entorno de empresa y no funcionaria desde fuera pero os puedo postear el codigo:

echo '<div class="modal-header">'; 
    echo    '<button type="button" class="close" data-dismiss="modal">&times;</button>';
    echo    '<h4 class="modal-title">Seleccione Contrato</h4>';
    echo  '</div>';
 
{   
    echo '<div class="modal-body">';   
    echo    '<<form name="form" action="autorizar.php" onSubmit="enviarDatos(); return false">';
    echo    '<div class="form-group">';
    echo        '<label class="col-sm-3 control-label" for="formGroup" id="contract">Contratos</label>';
 
    echo        '<div class="input-group col-sm-7">';
    echo        '<span class="input-group-addon"><span class="glyphicon glyphicon-list-alt"></span></span>';    
    echo        '<select  name="contrato" class="selectboxit" onchange="mostrarValor(this);">';
    echo '<option selected="disabled">Selecciona un Contrato</option>';
    foreach($incidencias as $cust) 
    { 
            echo '<option value="'.$cust->Num_distribucion.'-'.$cust->Num_dist_venta.'-'.$cust->Num_linea_operacion.'-'.$cust->Num_operacion.'">'.$cust->Num_contrato.' '.$cust->Cdad_disponible.'Kg de '.$cust->NombreProducto.'</option>';
 
    }
 
            echo '</select>';
    echo '</div>';
    echo '</div>';
 
    echo '<div class="col-xs-4">';
    /* echo '<input type="text" class="form-control"  size="5" name="cupo" id="cupo" disabled/>'; */
 
    echo '</div>';
    echo '</div>';
    echo '</div>';
    echo '<div class="col-sm-12">&nbsp;</div>';
    echo '<div class="col-sm-12">&nbsp;</div>';
    echo '<div class="col-sm-12">&nbsp;</div>';
 
    /* echo  "Toneladas de "; */
?>
<link rel="stylesheet" href="assets/css/font-icons/font-awesome/css/font-awesome.min.css">  
 
<?php
 
echo '<div class="modal-header">
 
        <h4 class="modal-title">Autorización de Matrículas</h4>
    </div>
<div class="col-sm-2">&nbsp;</div>
<div class="col-sm-3">&nbsp;</div>
 
 <div class="modal-body">
            <<form name="form" action="autorizar.php" onSubmit="enviarDatos(); return false">
 
                    <div class="form-group">
                            <label class="col-sm-3 control-label" for="formGroup">Tractora</label>
                              <div class="input-group col-sm-5">
                                <span class="input-group-addon"><span class="fa fa-keyboard-o"></span></span>
                              <input class="form-control" type="text" name="matricula" id="formGroup" placeholder="AAA1234">
 
                            </div>
                        </div>  
<div class="col-sm-12">&nbsp;</div>
<div class="col-sm-12">&nbsp;</div>
                    <div class="form-group">
                            <label class="col-sm-3 control-label" for="formGroup">Remolque</label>
                              <div class="input-group col-sm-5">
                                <span class="input-group-addon"><span class="fa fa-keyboard-o"></span></span>
                              <input class="form-control" type="text" name="matricular" id="formGroup" placeholder="AAA1234">
 
                            </div>
                          </div>    
<div class="col-sm-12">&nbsp;</div>
<div class="col-sm-12">&nbsp;</div>                     
                    <div class="form-group">
                            <label class="col-sm-3 control-label" for="formGroup">N.I.F-N.I.E</label>
                              <div class="input-group col-sm-5">
                            <span class="input-group-addon"><span class="fa fa-credit-card"></span></span>
                              <input class="form-control" type="text" name="dni" id="formGroup" placeholder="DNI o PASAPORTE">
                                </div>
                        </div>
<div class="col-sm-12">&nbsp;</div>
<div class="col-sm-12">&nbsp;</div>                                 
                    <div class="form-group">
                            <label class="col-sm-3 control-label" for="formGroup">Conductor</label>
                              <div class="input-group col-sm-5">
                            <span class="input-group-addon"><span class="entypo-user"></span></span>
                              <input class="form-control" type="text" name="xofer" id="formGroup" placeholder="Nombre y Apellido">
                                </div>
                        </div>
<div class="col-sm-12">&nbsp;</div>
<div class="col-sm-12">&nbsp;</div>
    <div class="form-group">
                            <label class="col-sm-3 control-label" for="formGroup">P.M.A</label>
                              <div class="input-group col-sm-5">
                            <span class="input-group-addon"><span class="entypo-download"></span></span>
                              <select name="pma" id="formGroup" class="selectboxit">
                              <option>40.800</option>
                              <option>41.000</option>
                              <option>44.000</option>
                              </select>
                            </div>
 
    </div>
    <div class="col-sm-12">&nbsp;</div>
    <div class="col-sm-12">&nbsp;</div>
                        <div class="modal-footer">
                        <input class="btn btn-success" id="enviar" type="submit" value="Enviar" />
                        </div>
                </form>
                <div id="result"></div>';
 
}
 
    $nopera = $cust->Num_operacion;
    $distventa = $cust->Num_dist_venta;
    $distribucion = $cust->Num_distribucion;
    $numproduct = $cust->Num_producto;
    $product = $cust->NombreProducto;
    $nuclienvendedor = $cust->Num_cliente_vendedor;
    $noclienvendedor = $cust->NombreClienteVendedor;
    $ncontrato = $cust->Num_contrato;
    $cupos = $cust->Cdad_disponible;
    $lineaopera = $cust->Num_linea_operacion;
/*  echo $nopera;
    echo '<br>';
    echo $lineaopera;
    echo '<br>';
    echo $distventa;
    echo '<br>';
    echo $distribucion;
    echo "|||||";
    echo '<br>';
    echo $ncontrato;
    echo '<br>';
     */
 
$_SESSION['Num_linea_operacion'] = $lineaopera;
$_SESSION['Cdad_disponible'] = $cupos;
$_SESSION['Num_contrato'] = $ncontrato;
$_SESSION['NombreClienteVendedor'] = $noclienvendedor;
$_SESSION['Num_cliente_vendedor'] = $nuclienvendedor;
$_SESSION['NombreProducto'] = $product;
$_SESSION['Num_producto'] = $numproduct;
$_SESSION['Num_distribucion'] = $distribucion;
$_SESSION['Num_dist_venta'] = $distventa;
$_SESSION['Num_operacion'] = $nopera;
 
?>
<script>
 function objetoAjax(){
        var xmlhttp = false;
        try {
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
 
            try {
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (E) {
                xmlhttp = false; }
        }
 
        if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
          xmlhttp = new XMLHttpRequest();
        }
        return xmlhttp;
    }
 
function enviarDatos(){
 
        //Recogemos los valores introducimos en los campos de texto
    //Estos se de acuerdo a la cantidad de input que tenga el formulario y se debe cambiar los valores en mayusculas (VARIABLE es la que se envia por post y NOMBRE es el nombre del imput  
$matricula = document.form.matricula.value;
$matricular = document.form.matricular.value;
$dni = document.form.dni.value;
$xofer = document.form.xofer.value;
$pma = document.form.pma.value;
 
         //Aquí será donde se mostrará el resultado
        resultado = document.getElementById('iddeldiv');
 
        //instanciamos el objetoAjax
        ajax = objetoAjax();
 
        //Abrimos una conexión AJAX pasando como parámetros el método de envío, y el archivo que realizará las operaciones deseadas
        ajax.open("POST", "autorizar.php", true);
 
        //cuando el objeto XMLHttpRequest cambia de estado, la función se inicia
        ajax.onreadystatechange = function() {
 
             //Cuando se completa la petición, mostrará los resultados 
            if (ajax.readyState == 4){
 
                //El método responseText() contiene el texto de nuestro 'consultar.php'. Por ejemplo, cualquier texto que mostremos por un 'echo'
                resultado.innerHTML = (ajax.responseText) 
            }
        } 
 
        //Llamamos al método setRequestHeader indicando que los datos a enviarse están codificados como un formulario. 
        ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
 
        //enviamos las variables a 'LOQUESEA.php' 
 
        ajax.send("&matricula="+matricula+"&matricular="+matricular+"&dni="+dni+"&pma="+pma)
 
}
</script>
<script>
var mostrarValor2 = function(x){
            document.getElementById('cupo').value=x.value;
            }
</script>
<script>
var mostrarValor3 = function(x){
            document.getElementById('cupo').value=x.value;
            }
</script>
 
<?
$matricula  =  $_POST['matricula'];
$matricular  =  $_POST['matricular'];
$dni  =  $_POST['dni'];
$xofer  =  $_POST['xofer'];
$select  =  $_POST['contrato'];
$pma  =  $_POST['pma'];
die();
?>

@javierecompring

1 diciembre 2015, 9:58
#10

hola!! @javierecompring

Pudiste resolver el problema me encuentro en la misma situacion. Espero me puedas compartir tu solucion.

@RoxV12

7 abril 2016, 0:45
#11

1) La línea: echo '<<form name="form" action="autorizar.php" onSubmit="enviarDatos(); return false">'; tiene un error, con la doble << inicial.

2) Deberías estar seguro de que existe el archivo autorizar.php en la carpeta en donde se encuentra el formulario. Ese archivo es el que recibirá todos los parámetros reunidos en el formulario y los procesará. Hay quienes hacen que los datos se envíen hacia el mismo archivo, pero para eso debes poner el mismo nombre del archivo del formulario en el parámetro ACTION o bien escribir lo siguiente:

echo '<form name="form" action="' . $SERVER["PHP_SELF"] . '" onSubmit [...resto de la línea...]

Además, en el archivo deberás hacer una validación al comenzar para saber si estás accediendo con variables ya pasadas desde el formulario o si debes mostrar el formulario para que se carguen. Eso lo haces con algo así:

// Iniciamos con una pregunta negativa (por el uso de "!") Si no existe el parámetro, que muestre el formulario, si existe, que lo procese...
 
if (!isset($_POST['nombre_del_parametro_esperado_desde_el_formulario'])) {
  echo "Aquí se muestra el formulario";
} else {
  echo "Recibimos las variables y hacemos con ellas lo necesario";
  $variable1 = $_POST['variable_recibida'];
  // Evaluo las variables y trabajo con ellas...
}

@proferay

6 mayo 2016, 0:35