2

div.focusとanimate()を使用してページの先頭にスクロールした後、idのテキストボックス(たとえばtxtName)にフォーカスを設定したいと思います。

document.readyがdocument.readyの後に実行されるように、アニメーションの後にフォーカスするように指定する機能はありますか?

スクロールに使用したコードを以下に示します。

$(".gototop").click(function(){ 
    var focusElement = $("#contents"); 
    $(focusElement).focus(); 
    ScrollToTop(focusElement); 
}); 

function ScrollToTop(el) { 
    $('html, body').animate({ scrollTop: $(el).offset().top - 50 }, 'slow');           
} 
4

2 に答える 2

9

animate のコールバックで要素にフォーカスを設定できます。これにより、アニメーションが完了したときにフォーカスを受け取ります。

function ScrollToTop(el) { 
    $('html, body').animate({ 
        scrollTop: $(el).offset().top - 50 }, 
    'slow', function() {
        $("#txtName").focus();
    });           
} 

elがフォーカスしたい要素である場合、代わりに渡された変数を使用できます#txtName

于 2012-08-31T07:18:50.877 に答える
3

このanimate関数は、アニメーションが完了すると実行されるコールバックを受け入れます。次のようなことができます。

$(".gototop").click(function(){ 
    var focusElement = $("#contents");
    ScrollToTop(focusElement, function() { focusElement.focus(); }); 
}); 

function ScrollToTop(el, callback) { 
    $('html, body').animate({ scrollTop: $(el).offset().top - 50 }, 'slow', callback);
} 
于 2012-08-31T07:21:50.393 に答える