当表单验证时,如何滚动到第一个错误而不是跳转?
我见过很多与此主题相关的问题,但我正在寻找简单的解决方案:
HTML 表单、jQuery 验证、需要多个字段。提交表单后,验证会跳转到第一个错误并突出显示它。为了提高可用性,我想滚动到第一个错误字段。但它总是完全破坏验证或抛出scrollTo错误。
我需要使用标准验证插件(http://docs.jquery.com/Plugins/Validation),但任何滚动器都可以,尽管我一直在尝试使用scrollTo(http://flesler.blogspot.com/2007/) 10/jqueryscrollto.html)。
示例代码位于 http://jsfiddle.net/DtgKQ/1/,感谢任何帮助。
I've seen many questions with variations on this theme, but I'm looking for the straightforward solution:
HTML form, jQuery validation, multiple fields are required. When the form is submitted, validation jumps to the first error and highlights it. To increase usability, I want to scroll to that first error field. But it keeps blowing up the validation entirely or throwing scrollTo errors.
I need to use the standard validation plugin (http://docs.jquery.com/Plugins/Validation) but any scroller would be fine, tho I had been trying with scrollTo (http://flesler.blogspot.com/2007/10/jqueryscrollto.html).
Sample code is at http://jsfiddle.net/DtgKQ/1/, any help is appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
您可以执行以下操作:
默认情况下,验证插件会关注第一个错误元素(如果有)。通过将其设置为
false
来关闭选项focusInvalid
。当表单无效时,执行回调
invalidHandler
处理程序。您可以通过第二个参数validator
访问验证器对象,从而访问 errorList 数组。然后,您可以相对于第一个错误元素设置滚动动画。这是代码:
DEMO
Here's what you can do:
By default the validate plugin focuses the first erroneous element (in case there's any). Turn off the option
focusInvalid
by setting it tofalse
.The callback
invalidHandler
handler is executed when the form is invalid. You get access through the second parametervalidator
to the validator object and thus to the errorList array. You can then animate the scroll relatively to the first erroneous element.Here's the code:
DEMO
我不喜欢所有的 jQuery 扩展,所以这是我对这个问题的解决方案:
I dont like all the jQuery extentions so here is my solution to this problem:
对于使用 HTML5 验证 + Vanilla JavaScript 的任何人:
不是这个问题的直接答案,但由于这是搜索这个问题时出现的主要帖子,我想我会在这里为任何也在寻找的人发布我的解决方案!
我在我的 ReactJS 项目中使用了它,但它也应该可以在使用现代浏览器的任何普通 ES6 JavaScript 设置中工作。
For Anyone Using HTML5 Validation + Vanilla JavaScript:
Not a direct answer to this question, but as this is the main post that comes up when searching for this question, I figured I'd post my solution here for anyone who's looking as well!
I'm using this in my ReactJS project, but it should work in just about any vanilla ES6 JavaScript setting using modern browsers, as well.
只需将此代码添加到您的主题 javascript 中即可:
just add this code to your themes javascript:
也许你可以检查什么输入失败并获取它的位置(顶部)并使用 jQuery 的
scrollTop
似乎获取每个错误字段并不是很容易获取(至少对我来说)。
在验证插件文档中搜索
errorPlacement
。有一个如何获取每个错误字段的示例。Maybe you could check what input failed and take it's position (top) and use jQuery's
scrollTop
It seems that getting each error field isn't very easy to get (at least for me).
Search for
errorPlacement
in the Validation plugin documentation. There is an example how to get each error field.你可以尝试下面使用纯javascript
you can try the below which uses plain javascript
试试这个:
try this: