【问题标题】:unable to scroll to the label for input field with an error message无法滚动到带有错误消息的输入字段的标签
【发布时间】:2012-01-17 06:25:48
【问题描述】:

我之前问了另一个问题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);

看起来 .offset() 函数不能在标签上调用?

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

【问题讨论】:

    标签: jquery scroll


    【解决方案1】:

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

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

    仅供参考,

    .parent([选择器])

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

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

    【讨论】:

    • @user1006072 很高兴听到这个消息,只是不要忘记检查这个答案 :)
    • 另一个快速的问题 - 我将如何关注错误 div 之后的下一个输入元素?
    • @user1006072 输入元素是错误 div 的兄弟吗?如果它紧跟在对象之后,则可以使用 next()。检查它:api.jquery.com/next
    • 错误div后面还有一堆其他的标记如
      ...... .. .我正在寻找类似的东西 - 找到下一个输入元素(无论中间的标记如何)。有没有这样的jquery选择器?
    • @user1006072 如果没有必要,最好使用合适的 jquery 选择器。不要通过 DOM 树导航。但如果必须,您可以使用nextAll('input').first() 请注意,输入与 DOM 树中的错误 div 处于同一级别是有效的。否则你必须使用 parent/parents/find 使其相同。如果你给我你的代码,我可以更准确地帮助你。
    猜你喜欢
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 2019-09-23
    • 2018-12-31
    相关资源
    最近更新 更多