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 s'exécutant sous Sharepoint.
Jusqu'à présent, j'ai trouvé que certains éléments les trouvaient (pour les éléments fixes) et d'autres pas. :(
Le code JQuery est correct. Vous devez exécuter dans le gestionnaire prêt pas 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>
Mettre à jour
J'ai essayé avec l'exemple de Karim79 (merci pour l'exemple) et cela fonctionne bien: http://jsfiddle.net/2sMfU/
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>
Ceci est une amélioration par rapport à la réponse de @ Mottie car à partir de jQuery 1.5.2 :text
sélectionne input
éléments sans attribut spécifié type
(auquel cas type="text"
est impliqué):
$('form').find(':text,textarea,select').filter(':visible:first')
Voici ma solution. Le code devrait être assez facile à 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 votre sélecteur.
Sélecteur:
focusFirst('form#aspnetForm');
Élément:
var el = $('form#aspnetForm');
focusFirst(el);
Vous pouvez essayer ci-dessous le code ...
$(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>