Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

rjruiz's avatar

focus on modal form

greetings community !!! I have a modal form. What I am looking for is to put the focus on each input of my form that does not pass the validations and that the focus is placed in each field that requires validation. How do I achieve this in my script?

form: I look forward to your prompt help !!!

{{ csrf_field() }} ×

Nuevo Cliente

Nombre
              </div>
          </div>               
          <div class="form-group">
            <label for="registro_fiscal" class="col-sm-3 control-label">Registro fiscal</label>
            <div class="col-sm-9">
              <input type="text" class="form-control" placeholder="Cuil" id="registro_fiscal" name="registro_fiscal">
             
            </div>
          </div>              
          <div class="form-group">
            <label for="sitio_web" class="col-sm-3 control-label">Sitio Web</label>
            <div class="col-sm-9">
              <input type="url" class="form-control" id="sitio_web" name="sitio_web">
            </div>
          </div>
          <div class="form-group">
            <label for="telefono" class="col-sm-3 control-label">Teléfono</label>
            <div class="col-sm-9">
              <input type="text" class="form-control" placeholder="Telefono empresa" id="telefono" name="telefono">
              
            </div>
          </div>              
        </div>           
        <div class="tab-pane" id="timeline">             
          <div class="form-group">
            <label for="nombre_cliente" class="col-sm-3 control-label">Nombres</label>
            <div class="col-sm-9">
              <input type="text" class="form-control" placeholder="Nombres" id="nombre_cliente" name="nombre_cliente">
            
            </div>
          </div>
          <div class="form-group">
            <label for="apellido" class="col-sm-3 control-label">Apellidos</label>
            <div class="col-sm-9">
              <input type="text" class="form-control" placeholder="Apellidos" id="apellido" name="apellido">
              
            </div>
          </div>
          <div class="form-group">
            <label for="email" class="col-sm-3 control-label">Correo Electrónico</label>
            <div class="col-sm-9">
              <input type="email" class="form-control" placeholder="Correo electronico" id="email" name="email">
              
            </div>
          </div>
          <div class="form-group">
            <label for="telefono_contacto" class="col-sm-3 control-label">Teléfono</label>
            <div class="col-sm-9">
              <input type="text" class="form-control" placeholder="Telefono contacto" id="telefono_contacto" name="telefono_contacto">
              
            </div>
          </div>              
        </div>
        <div class="tab-pane" id="settings">               
          <div class="form-group">
            <label for="calle" class="col-sm-3 control-label">Calle</label>
            <div class="col-sm-9">
              <input type="text" class="form-control" id="calle" name="calle">
            </div>
          </div>
          <div class="form-group">
            <label for="ciudad" class="col-sm-3 control-label">Ciudad</label>
            <div class="col-sm-9">
              <input type="text" class="form-control" id="ciudad" name="ciudad">
            </div>
          </div>
          <div class="form-group">
            <label for="provincia" class="col-sm-3 control-label">Región/Provincia</label>
            <div class="col-sm-9">
              <input type="text" class="form-control" id="provincia" name="provincia">
            </div>
          </div>
          <div class="form-group">
            <label for="codigo_postal" class="col-sm-3 control-label">Código Postal</label>
            <div class="col-sm-9">
              <input type="text" class="form-control" id="codigo_postal" name="codigo_postal">
            </div>
          </div>
          <div class="form-group">
            <label for="pais" class="col-sm-3 control-label">País</label>
            <div class="col-sm-9">
              <select class="form-control" name="pais_id" id="pais_id">
                <option value="0">Selecciona</option>        
                <option value="1">Argentina</option>                                                                
              </select>
            </div>
          </div>             
        </div>          
      </div>
      </form>
    </div>        
  </div>
  <div class="modal-footer" id="modal-footer">
    <input type="hidden" name="action" id="action"/>
    <button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
    <button type="submit" id="guardar_datos" class="btn btn-primary add">Registrar</button>
  </div>    
</div>

request: class ClientStoreRequest extends FormRequest { /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; }

/**
 * Get the validation rules that apply to the request.
 *
 * @return array
 */
public function rules()
{
    return [
        'nombre_cliente'    => 'required|alpha|min:3|max:20',
        'apellido'          => 'required|alpha|min:4|max:50',
        'email'             => 'required|string|email|unique:users,email|max:100',
        'nombre_empresa'    => 'required|string|min:3|max:20',
        'registro_fiscal'   => 'required|alpha_dash|min:13|max:15',
        'telefono'          => 'required|numeric|min:10',
        'telefono_contacto' => 'required|numeric|min:11'
    ];
}

script: $.ajax({ data: $('#form_agregar').serialize(), url: "{{ route('customers.clientes.store') }}", dataType: 'json', type: 'POST', success: function (data){ $('#form_agregar').trigger('reset'); $('#modal_agregar').modal('hide'); $('#clientes_table').DataTable().ajax.reload(); swal({ type : 'success', title : 'Success!', text : 'Data has been saved!' }); }, error : function(xhr){ var res = xhr.responseJSON; if($.isEmptyObject(res) == false){ $.each(res.errors, function (key, value){ $('#' + key) .closest('.form-group').find('div:first') .addClass('has-error') .append('' + value + ''); $('#empresa').tab('show'); $('#nombre_empresa').focus(); $('#registro_fiscal').focus(); $('#telefono').focus(); $('#contacto').tab('show'); $('#nombre_cliente').focus(); $('#apellido').focus(); $('#email').focus(); $('#telefono_contacto').focus(); }); } } }); });

0 likes
5 replies
Snapey's avatar

Please format your code by putting 3 backticks ``` on a line before and after each code block

Snapey's avatar

By the way, you can only put Focus on a single element at once.

rjruiz's avatar

ok this code

form:

<div class="modal fade" id="modal_agregar" role="dialog" tabindex="-1" aria-labelledby="myModalLabel">
<form class="form-horizontal" id="form_agregar" method="POST" action="{{ route('customers.clientes.store') }}">
  {{ csrf_field() }}
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" name="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
        <h4 class="modal-title" id="modal-title">Nuevo Cliente</h4>
      </div>      
      <div class="modal-body" id="modal-body">        
        <div class="nav-tabs-custom">
          <ul class="nav nav-tabs">
            <li class="active"><a href="#activity" data-toggle="tab" id="empresa">Empresa</a></li>
            <li><a href="#timeline" data-toggle="tab" id="contacto">Contacto</a></li>
            <li><a href="#settings" data-toggle="tab" id="direccion">Dirección</a></li>
          </ul>
          <form class="form-horizontal"> 
          <div class="tab-content" >             
            <div class="active tab-pane" id="activity">             
              <div class="form-group">
                <label for="nombre_empresa" class="col-sm-3 control-label">Nombre</label>
                  <div class="col-sm-9">
                    <input type="text" class="form-control" placeholder="Nombre empresa" id="nombre_empresa" name="nombre_empresa">                   

                  </div>
              </div>               
              <div class="form-group">
                <label for="registro_fiscal" class="col-sm-3 control-label">Registro fiscal</label>
                <div class="col-sm-9">
                  <input type="text" class="form-control" placeholder="Cuil" id="registro_fiscal" name="registro_fiscal">

                </div>
              </div>              
              <div class="form-group">
                <label for="sitio_web" class="col-sm-3 control-label">Sitio Web</label>
                <div class="col-sm-9">
                  <input type="url" class="form-control" id="sitio_web" name="sitio_web">
                </div>
              </div>
              <div class="form-group">
                <label for="telefono" class="col-sm-3 control-label">Teléfono</label>
                <div class="col-sm-9">
                  <input type="text" class="form-control" placeholder="Telefono empresa" id="telefono" name="telefono">

                </div>
              </div>              
            </div>           
            <div class="tab-pane" id="timeline">             
              <div class="form-group">
                <label for="nombre_cliente" class="col-sm-3 control-label">Nombres</label>
                <div class="col-sm-9">
                  <input type="text" class="form-control" placeholder="Nombres" id="nombre_cliente" name="nombre_cliente">

                </div>
              </div>
              <div class="form-group">
                <label for="apellido" class="col-sm-3 control-label">Apellidos</label>
                <div class="col-sm-9">
                  <input type="text" class="form-control" placeholder="Apellidos" id="apellido" name="apellido">

                </div>
              </div>
              <div class="form-group">
                <label for="email" class="col-sm-3 control-label">Correo Electrónico</label>
                <div class="col-sm-9">
                  <input type="email" class="form-control" placeholder="Correo electronico" id="email" name="email">

                </div>
              </div>
              <div class="form-group">
                <label for="telefono_contacto" class="col-sm-3 control-label">Teléfono</label>
                <div class="col-sm-9">
                  <input type="text" class="form-control" placeholder="Telefono contacto" id="telefono_contacto" name="telefono_contacto">

                </div>
              </div>              
            </div>
            <div class="tab-pane" id="settings">               
              <div class="form-group">
                <label for="calle" class="col-sm-3 control-label">Calle</label>
                <div class="col-sm-9">
                  <input type="text" class="form-control" id="calle" name="calle">
                </div>
              </div>
              <div class="form-group">
                <label for="ciudad" class="col-sm-3 control-label">Ciudad</label>
                <div class="col-sm-9">
                  <input type="text" class="form-control" id="ciudad" name="ciudad">
                </div>
              </div>
              <div class="form-group">
                <label for="provincia" class="col-sm-3 control-label">Región/Provincia</label>
                <div class="col-sm-9">
                  <input type="text" class="form-control" id="provincia" name="provincia">
                </div>
              </div>
              <div class="form-group">
                <label for="codigo_postal" class="col-sm-3 control-label">Código Postal</label>
                <div class="col-sm-9">
                  <input type="text" class="form-control" id="codigo_postal" name="codigo_postal">
                </div>
              </div>
              <div class="form-group">
                <label for="pais" class="col-sm-3 control-label">País</label>
                <div class="col-sm-9">
                  <select class="form-control" name="pais_id" id="pais_id">
                    <option value="0">Selecciona</option>       
                    <option value="1">Argentina</option>                                                                
                  </select>
                </div>
              </div>             
            </div>          
          </div>
          </form>
        </div>        
      </div>

script:

$.ajax({
          data: $('#form_agregar').serialize(),
          url: "{{ route('customers.clientes.store') }}",         
          dataType: 'json',
          type: 'POST',
          success: function (data){
            $('#form_agregar').trigger('reset');         
            $('#modal_agregar').modal('hide'); 
            $('#clientes_table').DataTable().ajax.reload();  
            swal({
                type : 'success',
                title : 'Success!',
                text : 'Data has been saved!'
            });
          },
          error : function(xhr){
            var res = xhr.responseJSON;
            if($.isEmptyObject(res) == false){
              $.each(res.errors, function (key, value){
                $('#' + key)
                  .closest('.form-group').find('div:first')                
                  .addClass('has-error')                                 
                  .append('<span class="help-block"><strong>' + value + '</strong></span>');
                  $('#empresa').tab('show');
                    $('#nombre_empresa').focus();
                    $('#registro_fiscal').focus();
                    $('#telefono').focus();
                  $('#contacto').tab('show');
                    $('#nombre_cliente').focus();
                    $('#apellido').focus();
                    $('#email').focus();
                    $('#telefono_contacto').focus();
              });
            } 
          }
        });
      });   

if the field does not pass the validation that puts the focus on the corresponding field as I could do in my script along with my form ??? help to!!!

rjruiz's avatar

@-Snapey corregi my code I hear your suggestion!!

Snapey's avatar

By the way... next time, just edit your original question

Please or to participate in this conversation.