Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why would a button click event cause site to reload in a Bootstrap form?

I'm using jQuery's show() and hide() functions on divs in order to code or simulate different consecutive form sections.

I've made a button that hides a div when it's clicked. What's strange is that once the button is clicked, the page will reload and come back to the div shown at first $(document).ready().

What's even more strange is that this problem mentioned above won't happen if you click in the nav bar text before clicking in the "continuar" button (Then the expected page will appear without reloading and showing the first page again).

The form can be visited here:

http://registropsicologos.maricelaaguilarflores.com:20791

The blue button is the responsible for the page reload problem, unless you click Visualizar at nav bar before clicking in "continuar".

I can't understand why this is happening, I've used .show() and .hide() before and this problem wasn't happening.

Here's the relevant JavaScript code:

$(document).ready(function () {      mostrarFormularioRegistro()      $(".btnSeccion").click(function() {         btnMostrarSeccion($(this))     }) })  function mostrarFormularioRegistro () {      $("#formularioRegistro").show()     mostrarSeccion(1)     $("#DB").hide()  }  function mostrarSeccion (seccion) {      for (var i = 1; i <4; i++) {         if (i===seccion)             $("#seccionRegistro"+i).show()         else             $("#seccionRegistro"+i).hide()     } }  function btnMostrarSeccion (idBtnSeccion) {      var seccion = parseInt(idBtnSeccion.attr("id").slice(-1))     if (seccion == 3)         mostrarSeccion(1)     else         mostrarSeccion(seccion+1)  } 

This is the body markup:

<body>      <div class="container" id="proyecto">          <ul class="nav nav-tabs">           <li class="active"><a href="#">Registrar</a></li>           <li><a href="#">Visualizar</a></li>         </ul>      </div>      <div id="formulario">          <div class="container" id="seccionRegistro1">             <form class="form-horizontal" role="form">                <div class="form-group">                 <label for="inputNombre" class="col-sm-2 control-label">Nombre(s)</label>                 <div class="col-sm-10">                   <input type="text" class="form-control" id="inputNombre" placeholder="Nombre(s)">                 </div>               </div>                <div class="form-group">                 <label for="inputApellidos" class="col-sm-2 control-label">Apellidos</label>                 <div class="col-sm-10">                   <input type="text" class="form-control" id="inputApellidos" placeholder="Apellidos">                 </div>               </div>                <div class="form-group">                 <label for="inputEdad" class="col-sm-2 control-label">Edad</label>                 <div class="col-sm-10">                   <input type="text" class="form-control" id="inputEdad" placeholder="Apellidos">                 </div>               </div>                <div class="form-group">                 <label for="inputTel" class="col-sm-2 control-label">Teléfono</label>                 <div class="col-sm-10">                   <input type="text" class="form-control" id="inputTel" placeholder="Teléfono">                 </div>               </div>                <div class="form-group">                 <label for="inputCel" class="col-sm-2 control-label">Celular</label>                 <div class="col-sm-10">                   <input type="text" class="form-control" id="inputCel" placeholder="Celular">                 </div>               </div>                  <div class="col-sm-offset-2 col-sm-10">                     <button class="btn btn-primary btnSeccion" id="btnSeccion1">Continuar</button>                 </div>              </form>         </div>          <div class="container" id="seccionRegistro2">             <form class="form-horizontal" role="form">                <div class="form-group">                 <label for="inputEscolaridad" class="col-sm-2 control-label">Escolaridad</label>                 <div class="col-sm-10">                   <input type="text" class="form-control" id="inputEscolaridad" placeholder="Escolaridad">                 </div>               </div>                <div class="form-group">                 <label for="inputAlmaMater" class="col-sm-2 control-label">Egresado de</label>                 <div class="col-sm-10">                   <input type="text" class="form-control" id="inputAlmaMater" placeholder="Egresado de">                 </div>               </div>                <div class="form-group">                 <label for="inputAñoEgreso" class="col-sm-2 control-label">Año de egreso</label>                 <div class="col-sm-10">                   <input type="text" class="form-control" id="inputAñoEgreso" placeholder="Año de egreso">                 </div>               </div>                <div class="form-group">                 <label for="inputCedula" class="col-sm-2 control-label">Cédula Profesional</label>                 <div class="col-sm-10">                   <input type="text" class="form-control" id="inputCedula" placeholder="Cédula Profesional">                 </div>               </div>                <div class="form-group">                 <label for="checkPosgrado" class="col-sm-2 control-label">Estudios de Posgrado</label>                 <div class="col-sm-1">                   <div class="checkbox">                     <label>                       <input type="checkbox"> Sí                     </label>                   </div>                 </div>                 <div class="col-sm-8">                     <div class="row">                       <div class="col-xs-4">                         <input type="text" class="form-control" placeholder="Posgrado" id="inputPosgrado1">                       </div>                       <div class="col-xs-4">                         <input type="text" class="form-control" placeholder="Posgrado" id="inputPosgrado2">                       </div>                       <div class="col-xs-4">                         <input type="text" class="form-control" placeholder="Posgrado" id="inputPosgrado3">                       </div>                     </div>                 </div>               </div>                 <div class="form-group">                 <label for="inputCedula" class="col-sm-2 control-label">Cédula Profesional</label>                 <div class="col-sm-10">                   <label class="checkbox-inline">                   <input type="checkbox" id="inputAreaTrabajoClinica" value="option1"> Clínica                   </label>                   <label class="checkbox-inline">                   <input type="checkbox" id="inputAreaTrabajoSocial" value="option1"> Social                   </label>                   <label class="checkbox-inline">                   <input type="checkbox" id="inputAreaTrabajoLaboral" value="option1"> Laboral                   </label>                   <label class="checkbox-inline">                   <input type="checkbox" id="inputAreaTrabajoEducativa" value="option1"> Educativa                   </label>                                     </div>               </div>                <div class="form-group">                 <label for="inputTrabajo" class="col-sm-2 control-label">Institución de trabajo</label>                 <div class="col-sm-10">                   <input type="text" class="form-control" id="inputTrabajo" placeholder="Institución de trabajo">                 </div>               </div>                <div class="form-group">                 <label for="trabajoIndependiente" class="col-sm-2 control-label">Desarrollo Profesional Independiente</label>                 <div class="col-sm-1">                   <div class="checkbox">                     <label>                       <input type="checkbox" id="trabajoIndependiente"> Sí                     </label>                   </div>                 </div>                 <div class="col-sm-8">                     <div class="row">                       <div class="col-xs-6">                         <input type="text" class="form-control" placeholder="Actividad independiente" id="inputActividadIndependiente1" disabled="true">                       </div>                       <div class="col-xs-6">                         <input type="text" class="form-control" placeholder="Actividad independiente" id="inputActividadIndependiente2" disabled="true">                       </div>                                               </div>                 </div>               </div>                        <div class="form-group">                 <label for="checkPosgrado" class="col-sm-2 control-label">Actividades de trabajo no relacionadas con la psicología</label>                 <div class="col-sm-1">                   <div class="checkbox">                     <label>                       <input type="checkbox" id="actividadesAjenasPsicologia"> Sí                     </label>                   </div>                 </div>                 <div class="col-sm-8">                     <div class="row">                       <div class="col-xs-6">                         <input type="text" class="form-control" placeholder="Actividad" id="actividadNoPsicologia1" disabled="true">                       </div>                       <div class="col-xs-6">                         <input type="text" class="form-control" placeholder="Actividad" id="actividadNoPsicologia2" disabled="true">                       </div>                                               </div>                 </div>               </div>                  <div class="col-sm-offset-2 col-sm-10">                     <button class="btn btn-primary btnSeccion" id="btnSeccion2">Continuar</button>                 </div>              </form>         </div>          <div class="container" id="seccionRegistro3">             <form class="form-horizontal" role="form">                    <div class="form-group">                     <label for="actividadesInteres" class="col-sm-2 control-label">Actvidades profesionales en las que le gustaría participar</label>                     <div class="col-sm-10">                       <label class="checkbox-inline">                       <input type="checkbox" id="inputAreaTrabajoClinica" value="option1"> Conferencias y encuentros                       </label>                       <label class="checkbox-inline">                       <input type="checkbox" id="inputAreaTrabajoSocial" value="option1"> Cursos                       </label>                       <label class="checkbox-inline">                       <input type="checkbox" id="inputAreaTrabajoLaboral" value="option1"> Talleres                       </label>                       <label class="checkbox-inline">                       <input type="checkbox" id="inputAreaTrabajoEducativa" value="option1"> Diplomados                       </label>                           <label class="checkbox-inline">                       <input type="checkbox" id="inputAreaTrabajoEducativa" value="option1"> Maestría                       </label>                           <label class="checkbox-inline">                       <input type="checkbox" id="inputAreaTrabajoEducativa" value="option1"> Doctorado                       </label>                                                 </div>                   </div>                    <div class="form-group">                     <label for="capacitacionInteres" class="col-sm-2 control-label">Areas de la psicología en las que le gustaría capacitarse</label>                     <div class="col-sm-10">                       <label class="checkbox-inline">                       <input type="checkbox" id="inputAreaTrabajoClinica" value="Clínica"> Clínica                       </label>                       <label class="checkbox-inline">                       <input type="checkbox" id="inputAreaTrabajoSocial" value="Social"> Social                       </label>                       <label class="checkbox-inline">                       <input type="checkbox" id="inputAreaTrabajoLaboral" value="Laboral"> Laboral                       </label>                       <label class="checkbox-inline">                       <input type="checkbox" id="inputAreaTrabajoEducativa" value="Educativa"> Educativa                       </label>                           <label class="checkbox-inline">                       <input type="checkbox" id="inputAreaTrabajoEducativa" value="Todas"> Todas                       </label>                     </div>                   </div>                    <div class="form-group">                     <label for="inputNombre" class="col-sm-2 control-label">¿Alguna temática en particular que le gustaría conocer o capacitarse?</label>                     <div class="col-sm-10">                       <input type="text" class="form-control" id="inputInteresCapacitacion" placeholder="Temática de interés">                     </div>                   </div>                    <div class="form-group">                     <label for="checkPosgrado" class="col-sm-2 control-label">¿Pertenece a alguna agrupación relacionada con el campo de la psicología?</label>                     <div class="col-sm-1">                       <div class="checkbox">                         <label>                           <input type="checkbox" id="actividadesAjenasPsicologia"> Sí                         </label>                       </div>                     </div>                     <div class="col-sm-8">                         <div class="row">                           <div class="col-xs-6">                             <input type="text" class="form-control" placeholder="Actividad" id="Agrupación" disabled="true">                           </div>                           <div class="col-xs-6">                             <input type="text" class="form-control" placeholder="Actividad" id="Agrupación" disabled="true">                           </div>                                                   </div>                     </div>                   </div>                    <div class="form-group">                     <label for="checkPosgrado" class="col-sm-2 control-label">¿Ha participado con anterioridad en algún evento de la Asociación de Psicólogos de Tuxtepec?</label>                     <div class="col-sm-1">                       <div class="checkbox">                         <label>                           <input type="checkbox" id="participacionEventos"> Sí                         </label>                       </div>                     </div>                     <div class="col-sm-8">                         <select multiple class="form-control" id="eventosAsistidos">                           <option value="abrazoterapia">Abrazoterapia</option>                           <option value="tallerMujeres">Taller autoestima mujeres</option>                         </select>                     </div>                   </div>                    <p class="bg-success">                          ¿Le gustaría pertenecer como miembro activo de la Asociación de Psicólogos de Tuxtepec, A.C. "Manos Unidas por un vivir más pleno?" &nbsp;&nbsp;&nbsp;&nbsp;                             <label>                               <input type="checkbox" id="idInteresMiembro"><strong>Sí</strong>                             </label>                    </p>                  <div class="col-sm-offset-2 col-sm-10">                     <button class="btn btn-primary btnSeccion" id="btnSeccion3">Continuar</button>                 </div>                  </form>             </div>     </div> </body> 
like image 389
diegoaguilar Avatar asked May 02 '14 04:05

diegoaguilar


People also ask

How do I stop my page from reloading on button click?

Add type="button" to the button. The default value of type for a button is submit , which self posts the form in your case and makes it look like a refresh. Except this prevents HTML5 form validation (such as for input of type="email"). This is the best option.

Why does my button refresh the page?

Your page is reloading because the button is submitting your form. The submit will, by default, re-load the page to show form errors or the result of the submit action. The cleanest fix is, as you discovered, to specify a button type.

How do you prevent page reload on form submit in JS?

Use the preventDefault() method on the event object to prevent a page refresh on form submit in React, e.g. event. preventDefault() . The preventDefault method prevents the browser from issuing the default action which in the case of a form submission is to refresh the page.


1 Answers

A <button> tag uses Submit behavior by default. Thus your page submits the form when the button is clicked and this looks like a page refresh itself. To work around this you can either use an input tag

<input type="button" class="btn btn-primary btnSeccion" id="btnSeccion3" value="Continuar"/> 

to do the same effect. Or you can cancel the Submit in your button's click Event Handler (if that's what you want) like this:

$(".btnSeccion").click(function(event) {     btnMostrarSeccion($(this));     event.preventDefault(); }) 
like image 164
Sreenath H B Avatar answered Sep 24 '22 01:09

Sreenath H B