2012-02-08 7 views
1

私は最初のエラーに自分のフォームをスクロールするには、次のスニペットを持っているのアニメーション。送信時にエラーが発生した場合は、フォームを最初のエラーにスクロールします。jQueryのは、scrollTopスプライトコンテナ

var $errors = $(".mcError"); 
if($errors.size() > 0){ 
    if(settings.mcScrollToError){ 
     $('html,body').stop().delay(500).animate({scrollTop: $errors.filter(":first").offset().top -30},'slow'); 
    } 
    return false; 
} 
else{ 
    mcResponse('', false); 
    return true; 
} 

私は、このようなdivのクラス$('.myDivClass')としてコンテナ要素の名前で$('html,body')を交換する場合は、うまく動作するようには思えません。ランダムな場所にスクロールします。

コンテナ要素のCSSは次のようになります(あなたは私が何を意味するか知っている):

.mcModalWrap1{ 
position:fixed; 
top:0; 
bottom:0; 
left:0; 
right:0; 
padding:50px; 
background-image:url(images/overlay.png); 
overflow:auto; 
z-index:999; 
display:none; 
} 

答えて

1

.offset()

Get the current coordinates of the first element in the set of matched elements, relative to the document.

出典:http://api.jquery.com/offset/

を使用します。相対位置を取得する::

Get the current coordinates of the first element in the set of matched elements, relative to the offset parent.

出典:たとえばhttp://api.jquery.com/position

$('.myDivClass').stop().delay(500).animate({ scrollTop: ($errors.filter(":first").position().top -30) },'slow'); 
+0

私は同じ結果を得るように見えます。 – user1002039

+0

リンクを投稿してその動作を確認できますか? – Jasper

+0

申し訳ありません、ファイルをアップロードできませんでした。私は答えを受け入れるだろう。ありがとうございました! – user1002039

関連する問題