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

时间:2014-10-13 14:41:19

标签: javascript jquery jquery-validate

我试图将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

的验证

1 个答案:

答案 0 :(得分:1)

引用OP

  

“...问题是只有在点击提交按钮时才触发.validate方法。我希望在onfocusonblur处触发该方法,我认为是jQuery.validate()的默认值。“

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

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

此默认行为称为“延迟验证”,而不是“Eager Validation”,这是您似乎要求的。

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

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

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