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"> </div> <div class="col-sm-3"> </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"> </div> <div class="col-sm-12"> </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"> </div> <div class="col-sm-12"> </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"> </div> <div class="col-sm-12"> </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"> </div> <div class="col-sm-12"> </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
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
he corregido lo que me comentas y sigue igual
@javierecompring
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
Si rienes toda la razón pero ahora le doy al nuevo botón y no hace nada.
@javierecompring
Así es como quieres que funcione?
http://jsfiddle.net/iBet7o/8hsqvq0x/
@iBet7o
SI asi estaria bien !
@javierecompring
Pero sigue sin funcionar he copiado el ejemplo y nada
@javierecompring
No tienes una link que nos pases para ver cual es el error?
@iBet7o
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">×</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"> </div>'; echo '<div class="col-sm-12"> </div>'; echo '<div class="col-sm-12"> </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"> </div> <div class="col-sm-3"> </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"> </div> <div class="col-sm-12"> </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"> </div> <div class="col-sm-12"> </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"> </div> <div class="col-sm-12"> </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"> </div> <div class="col-sm-12"> </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"> </div> <div class="col-sm-12"> </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
hola!! @javierecompring
Pudiste resolver el problema me encuentro en la misma situacion. Espero me puedas compartir tu solucion.
@RoxV12
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