2010-02-22 3 views
2

Sur mes pages après une publication que je suis en train de replacer le focus sur un élément Centrée auparavantjQuery focus postback

$(window).load(function() { 
    $('.focus').focus(); 
}); 

$(document).ready(function() { 
    $('input:not([type=button],[type=submit]), select, textarea').focus(function() { 
    $(this).addClass('focus'); 
    }); 
    $('input:not([type=button],[type=submit]), select, textarea').blur(function() { 
    $(this).removeClass('focus'); 
    }); 
}); 

Mon code ressemble à ceci et cela fonctionne même pour des éléments imbriqués, mais me semble un peu difficile à, Je me demande simplement s'il existe une façon meilleure/plus optimale de le faire?

Répondre

1

Vous pouvez enchaîner le sélecteur et placer le déclencheur focus dans la fonction dom ready. Vous pouvez même essayer d'ajouter les éléments input sur la liste noire au lieu de la liste noire.

$(document).ready(function(){ 
    $('.focus').focus(); 
    $('input[type=text], select, textarea').focus(function() { 
     $(this).addClass('focus'); 
     // To save the focused value to a hidden field 
     $('#id-of-Hidden-Field').val($(this).attr('name')); 

    }).blur(function() { 
     $(this).removeClass('focus'); 
     // remove the focus hidden field 
     $('#id-of-Hidden-Field').val(''); 
    }); 
}); 

Cependant, je ne sais pas comment vous enregistrez quel élément a été concentré avant la postback pour la sortie avec la classe focus sur la nouvelle charge de page. Si vous êtes faire cela en quelque sorte, alors ce code est très bien.

+0

Merci pour votre réponse. Vous avez raison, on dirait que c'est ce que je dois faire - ajouter un champ caché et l'enregistrer là, à moins qu'il y ait une meilleure façon. – Victor

+0

Si vous aimez la réponse, vous devriez le marquer correctement. :) –

+0

Je le ferai sûrement. Mais si vous pouviez me montrer comment sauver le contrôle ciblé en utilisant un champ caché par exemple, comme cela semble la meilleure option, j'apprécierais cela. – Victor