¿Cómo puedo seleccionar texto dentro de la entrada cuando el modal está cerrado? El siguiente código funciona: cuando hago clic en el campo de entrada, aparece una alerta y se selecciona el texto. En evento de ocultación modal se muestra una alerta, pero el texto no está seleccionado. ¿Que esta pasando aqui?

Código JS:

// Sellect text
$('.user').on('click', '#name', function(){
        $(this).select();
        alert(1);
    });
$('#myModal').on('hide.bs.modal', function(){

    $('.user').find('#name').trigger('click');

});

Html

<div class="user">
  <p>Name
        <input type="text" name="name" id="name" value="<?php echo $user->name ?>" readonly="readonly">
  </p>
</div>

SOLUCIÓN

Descubrí que en lugar de usar el evento hide.bs.modal , debería usar el evento hidden.bs.modal . En ese caso, el script está funcionando.

1
Sasha 10 dic. 2015 a las 19:39

3 respuestas

La mejor respuesta

.focus no funciona por alguna razón, no le permitirá enfocar el elemento hasta que el modal esté completamente descargado. Incluso intenté cambiar el evento a hidden.bs.modal que se activa después de hide.bs.modal y no importa.

Una solución alternativa que he encontrado es usar setInterval y verificar si el cuerpo tiene la clase "modal-open" una vez que no activa el evento de foco

$('#myModal').on('hidden.bs.modal', function() {
  var waitForClose = window.setInterval(function() {
    if ($('body').hasClass('modal-open') == false) {
      $('.user').find('#name').trigger('focus');
      window.clearInterval(waitForClose)
    }
  }, 100);
});

http://jsfiddle.net/SeanWessell/61sc4Ldr/

1
Sean Wessell 10 dic. 2015 a las 17:13

No estoy seguro de dónde está el campo de texto al que se refiere. En el elemento modal o no. Suponiendo que ya especificó en el script que el documento está listo ($(document).ready(..), o cargó ese script después de que los elementos html se crean en el html) Puede intentar llamar a $( "#name" ).focus(function() { $(this).select(); } ); en el evento de cierre.

0
Manuel 10 dic. 2015 a las 16:54

Descubrí que en lugar de usar el evento hide.bs.modal, debería usar el evento hidden.bs.modal. En ese caso, el script está funcionando.

1
Sasha 10 dic. 2015 a las 17:14
34207189