Tengo una entrada que debería mantener el enfoque, debido a los requisitos del programa. Mientras usa el software, la entrada puede estar oculta en algún momento, pero cuando vuelve a aparecer debería recuperar el enfoque, pero no lo hace. Aún así, si verifica los eventos vinculados en la entrada, puede ver que en realidad no perdió el evento.
Hay un jsfiddle simple que muestra este comportamiento: https://jsfiddle.net/5puu261v/
$('#barcode').focus() $('#barcode').focusout(function(){ $(this).focus(); }); <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button onclick="$('#barcode').toggle()">Toggle input</button> <input type="text" id="barcode" />Se agradecería si pudiera solucionarlo o evitarlo sin vincular el evento nuevamente.
Editar:
El punto es: ¿Por qué la entrada no se enfoca, después de alternar, al hacer clic en cualquier otro elemento (como el botón que lo hace visible nuevamente)?
Puede agregar .focus() al evento de clic para que cada vez que se haga clic en el botón, la entrada se enfocará, como:
$('button').click(function(){ $('#barcode').toggle().focus(); });html:
<button>Toggle input</button> <input type="text" id="barcode" />Espero que esto ayude.
$('#barcode').focus() $('#barcode').focusout(function(){ $(this).focus(); }); $('button').click(function(){ $('#barcode').toggle().focus(); }); <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button>Toggle input</button> <input type="text" id="barcode" />Puede volver a llamar al focus del método en el evento onclick del botón:
$('#barcode').focus() $('#barcode').focusout(function(){ $(this).focus(); }); <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button onclick="$('#barcode').toggle();$('#barcode').focus();">Toggle input</button> <input type="text" id="barcode" />