2012-01-16 21 views
11

フォーム全体に特定のエラーメッセージを含む非表示のdivがあります。フォームを送信する前に、すべての必須フィールドにテキストが入力されているかどうかを確認する検証ルーチンを実行します。そうでない場合は、クラス 'redAlert'を持つdivがテキストフィールドのすぐ上に表示されます。また、エラーメッセージが表示されたら、ダイアログウィンドウをこの位置に右にスクロールさせたいと思う。私はこれを行うために利用できるプラグインがかなりあることを知っていますが、私は単純なJqueryを使ってそれをやりたいのです。私はしようとしている)クラスredAlertで最初の可視divを見つける、b)このdivの.offset()を呼び出して位置を見つける、c)ウィンドウオブジェクトで.scroll()を呼び出すが、これを取得していない働く私が何かを完全に見逃しているか、構文が有効でないかどうかを教えてください(私はJqueryの構文エラーに苦しんでいることがよくあります)。以下は私のコードです。 また、これは可視divを見つけるだけです(一度にエラーdivが1つしかないと仮定します)、特定のクラスで最初に表示されるdivを見つけるセレクタを教えてください。jqueryは、エラーとフォーカスの場合に特定のdiv位置にスクロールします

var errorDiv = $('.redAlert:visible').attr("id"); 
var scrollPos = $("#"+errorDiv).offset(); 
//alert(scrollPosition); // This alert always says 'null', why ? 
$(window).scroll(scrollPos); 
//Also tried scrollTo(); 

ありがとうございます。

答えて

23
var errorDiv = $('.redAlert:visible').first(); 
var scrollPos = errorDiv.offset().top; 
$(window).scrollTop(scrollPos); 

デモ:http://jsfiddle.net/Cjuve/2/

+0

パーフェクト取り残さコードで

見て!魅力的な作品。どうもありがとう !! – user1006072

+0

パーフェクト!ありがとう –

1

私はそのつもりがうまくいかないと思います。私は

$('html, body').animate({ 
    scrollTop: ($('.error').first().offset().top) 
},500); 
関連する問題