无法滚动到输入字段的标签,并显示错误消息

时间:2012-01-17 06:25:49

标签: jquery scroll

我之前问过另一个问题here 但是,后来我意识到我的要求有点不同。上面引用的解决方案只带我到错误div,但我需要向上滚动到输入文本字段的标签上方。下面是html。

<label class="label_required" for="phone_num_key"></label>
 <table class="table_Box">
  <tbody>
    <tr id="someId" class="redAlert">

       <Some more mark up here>

    </tr>
  </tbody>
 </table>

如何使用类'redAlert'向上滚动到标签而不是tr元素 我尝试了以下但它对我不起作用。

var errorDiv= $('.redAlert:visible').first();
var errorLabel = errorDiv.parent("table").prev("label");
// also tried this
//var errorLabel = errorDiv.closest("label").prev();
var scrollPosition = (errorLabel.offset().top); 
    $(window).scrollTop(scrollPosition);

看起来无法在标签上调用.offeset()函数?

编辑 - 请注意表单上有多个这样的标签,所以我基本上不能使用类选择器

1 个答案:

答案 0 :(得分:1)

offset()确实有用。问题是parent()

使用errorDiv.parents('table').prev('label');

FYI,

  

.parent([selector])

     

给定一个表示一组DOM元素的jQuery对象,   .parent()方法允许我们通过这些父母进行搜索   DOM树中的元素并从中构造一个新的jQuery对象   匹配元素。 .parents()和.parent()方法类似,   除了后者只在DOM树上移动一个级别。

                                           from http://api.jquery.com/parent/