j'ai essayé
$(":input:not(input[type=button],input[type=submit],button):visible:first")
mais il ne trouve rien.
Quelle est mon erreur?
UPD: J'exécute ceci sur $ (document) .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>
et dans le débogage, je peux voir que firstInput est vide.
UPD2: Je suis dans la page ASP.NET fonctionnant sous Sharepoint.
J'ai trouvé jusqu'à présent que pour certains éléments, il les trouve (pour les fixes) et pour certains pas. :(
jquery
input
jquery-selectors
Artem
la source
la source
$(document)
estready()
?type="hidden"
? Cliquez avec le bouton droit sur la page et affichez la source. Le HTML généré est également important. Sans lui et sans un SSCCE approprié , il filme dans le noir.Réponses:
Pourquoi ne pas cibler uniquement ceux que vous voulez ( démo )?
$('form').find('input[type=text],textarea,select').filter(':visible:first');
Éditer
Ou utilisez jQuery : input selector pour filtrer les descendants des formulaires.
$('form').find('*').filter(':input:visible:first');
la source
':input:visible:enabled:not([readonly]):first'
Le code JQuery est très bien. Vous devez exécuter dans le gestionnaire prêt et non dans l'événement de chargement de fenêtre.
<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>
Mise à jour
J'ai essayé avec l'exemple de Karim79 (merci pour l'exemple) et cela fonctionne très bien: http://jsfiddle.net/2sMfU/
la source
Ceci est mon résumé de ce qui précède et fonctionne parfaitement pour moi. Merci pour l'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>
la source
C'est une amélioration par rapport à la réponse de @ Mottie car à partir de jQuery 1.5.2
:text
sélectionne lesinput
éléments qui n'ont pas d'type
attribut spécifié (auquel castype="text"
est implicite):$('form').find(':text,textarea,select').filter(':visible:first')
la source
Voici ma solution. Le code devrait être assez simple à suivre mais voici l'idée:
Le code:
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(); }
Ensuite, appelez simplement focusFirst avec votre élément parent ou sélecteur.
Sélecteur:
focusFirst('form#aspnetForm');
Élément:
var el = $('form#aspnetForm'); focusFirst(el);
la source
Vous pouvez essayer le code ci-dessous ...
$(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>
la source