jQuery.validate在我的Rails应用程序中仅在提交时触发

jQuery.validate only triggers on submit in my Rails App

本文关键字:提交 应用程序 validate 我的 Rails jQuery      更新时间:2023-09-26

我正在尝试将jQuery Validate插件集成到我的Rails应用程序中:

<script>
$(function() {
      $("#edit_researcher").validate({
        debug: false,
        rules: {
          "researcher[first_name]": {required: true},
          "researcher[email]": {required: true, email: true}
        },
        messages: {
          "researcher[first_name]": { required: "First name is required" },
          "researcher[email]": {
          required: "Email is required",
          email: "Your email address must be in the format of name@domain.com"
          }
        }
    });
</script>

这是可行的,但问题是只有在单击提交按钮时才会触发.validate方法。我希望在onfocusonblur触发它,因为我认为这是jQuery.validate()的默认值。

在Rails应用程序中实现jQuery.validate()时,有人遇到过同样的问题吗?

如何使其触发对onfocusonblur的验证?

报价OP

"…问题是.validate方法只有在单击提交按钮时才会触发。我希望在onfocusonblur触发它,因为我认为这是jQuery.validate()的默认值。"

此插件中没有onfocusonblur这样的事件。实际上,默认行为是onfocusoutonkeyup。然而,这两种行为只有在初次点击提交按钮后才开始工作。

您现有的代码:http://jsfiddle.net/bu7ukmvy/

这种默认行为被称为"懒惰验证",而不是"渴望验证",这似乎是您所要求的。

如果用户已经单击了提交按钮,则可以修改onfocusoutonkeyup回调函数以忽略它们,而是在第一次模糊并按键时触发它们。

$("#edit_researcher").validate({
    // rules & options,
    ....,
    onfocusout: function (element) {
        this.element(element);
    },
    onkeyup: function (element, event) {
        this.element(element);
    }
});

工作演示:http://jsfiddle.net/bu7ukmvy/1/