【发布时间】:2020-01-25 11:10:42
【问题描述】:
我有一个要验证的页面,我会在字段旁边显示相关的验证消息。
我希望页面滚动到第一次验证失败的页面部分 当用户点击保存按钮时显示消息
我想滚动到具有row-validate 类的元素,该元素具有visibility:visible。
<div class="row form-inputs">
<div class="col-12">
<label>Full Name *</label>
<input name="txtFirstName" type="text" id="txtFirstName" class="form-control">
<span id="rfFN" class="row-validate" style="visibility:hidden;">Mandatory field</span>
</div>
</div>
<div class="row form-inputs">
<div class="col-12">
<label>Email *</label>
<input name="txtEmail" type="text" id="txtEmail" class="form-control">
<span id="rfvEmail" class="row-validate" style="visibility: visible;">Mandatory field</span>
<span id="revEmail" class="row-validate" style="visibility:hidden;">Invalid email address</span>
</div>
</div>
<div class="row form-inputs">
<div class="col-12">
<label>Mobile *</label>
<input name="txtPhone" type="text" value="05" id="txtPhone" class="form-control" placeholder="0501234567">
<span id="rfvphone" class="row-validate" style="visibility:hidden;">Mandatory field</span>
<span id="revPhone" class="row-validate" style="visibility: visible;">! Enter correct mobile number </span>
</div>
</div>
<div class="row form-inputs">
<div class="col-12">
<label>Company </label>
<input name="txtCompany" type="text" id="txtCompany" class="form-control">
</div>
</div>
jQuery
下面的代码会将我滚动到具有row-validate 类的第一个元素,但它不会检查它是否具有visibility:visible 可见性属性为visible 或hidden
$("#button").click(function() {
$([document.documentElement, document.body]).animate({
scrollTop: $(".row-validate").offset().top
}, 2000);
});
【问题讨论】:
-
你可以使用
$(".row-validate:visible")- stackoverflow.com/a/40469041/863110 -
它仍然移动到页面顶部可能是因为属性是内联的而不是类的一部分
style="visibility: hidden;" -
它总是移动到顶部,因为你有相同类的
Mandatory field通知总是可见的。您需要为隐藏的验证消息提供它们自己的单独类。然后:visible将起作用,如上所述。 -
内联属性是在验证失败时由 asp.net webform 页面自动生成的,所以不知道如何定位它?
标签: javascript jquery