Lo intenté
$(":input:not(input[type=button],input[type=submit],button):visible:first")
pero no encuentra nada.
Cual es mi error
UPD: ejecuto esto en $ (documento) .load ()
<script type="text/javascript">
$(window).load(function () {
var aspForm = $("form#aspnetForm");
var firstInput = $(":input:not(input[type=button],input[type=submit],button):visible:first", aspForm);
firstInput.focus();
});
</script>
y en la depuración puedo ver que firstInput está vacío.
UPD2: Estoy en la página ASP.NET que se ejecuta en Sharepoint.
Hasta ahora he descubierto que para algunos elementos los encuentra (para los fijos) y para otros no. :(
jquery
input
jquery-selectors
Artem
fuente
fuente
$(document)
esready()
?type="hidden"
? Haga clic con el botón derecho en la página y vea la fuente. El HTML generado también es importante. Sin él y sin un SSCCE adecuado , se dispara en la oscuridad.Respuestas:
¿Por qué no apuntar a los que desea ( demostración )?
$('form').find('input[type=text],textarea,select').filter(':visible:first');
Editar
O use jQuery : selector de entrada para filtrar los descendientes de formularios.
$('form').find('*').filter(':input:visible:first');
fuente
':input:visible:enabled:not([readonly]):first'
El código de JQuery está bien. Debe ejecutar en el controlador listo, no en el evento de carga de la ventana.
<script type="text/javascript"> $(function(){ var aspForm = $("form#aspnetForm"); var firstInput = $(":input:not(input[type=button],input[type=submit],button):visible:first", aspForm); firstInput.focus(); }); </script>
Actualizar
Probé con el ejemplo de Karim79 (gracias por el ejemplo) y funciona bien: http://jsfiddle.net/2sMfU/
fuente
Este es mi resumen de lo anterior y funciona perfectamente para mí. Gracias por la info!
<script language='javascript' type='text/javascript'> $(document).ready(function () { var firstInput = $('form').find('input[type=text],input[type=password],input[type=radio],input[type=checkbox],textarea,select').filter(':visible:first'); if (firstInput != null) { firstInput.focus(); } }); </script>
fuente
Esta es una mejora con respecto a la respuesta de @ Mottie porque a partir de jQuery 1.5.2
:text
seleccionainput
elementos que no tienen untype
atributo especificado (en cuyo casotype="text"
está implícito):$('form').find(':text,textarea,select').filter(':visible:first')
fuente
Aquí está mi solución. El código debería ser bastante fácil de seguir, pero aquí está la idea:
El código:
function focusFirst(parent) { $(parent).find('input, textarea, select') .not('input[type=hidden],input[type=button],input[type=submit],input[type=reset],input[type=image],button') .filter(':enabled:visible:first') .focus(); }
Luego, simplemente llame a focusFirst con su elemento principal o selector.
Selector:
focusFirst('form#aspnetForm');
Elemento:
var el = $('form#aspnetForm'); focusFirst(el);
fuente
Puede probar el siguiente código ...
$(document).ready(function(){ $('form').find('input[type=text],textarea,select').filter(':visible:first').focus(); })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <form> <input type="text" /> <input type="text" /> <input type="text" /> <input type="text" /> <input type="text" /> <input type="submit" /> </form>
fuente