这是一个简单的示例:http://codepen.io/spacejaguar/pen/KrvqNW

的HTML:

<form data-parsley-validate>
  <label for="name">Name:</label>
  <input type="text" name="name" required>
  <br>
  <input type="submit" value="validate">

  <p><small>This is a simplistic example, good to start from when giving examples of use of Parsley</small></p>
</form>

和JS
$(function () {
    $('form').parsley()
    .on('form:init', function() {
        console.log('Form init', arguments);
    })
    .on('field:init', function() {
        console.log('Field init', arguments);
    })
    .on('form:validate', function() {
        console.log('Form validate', arguments);
    })
    .on('form:submit', function() {
        return false; // Don't submit form for this demo
    });
});

似乎根本没有调用形式:init 字段:init 回调函数,而其他任何函数都可以正常工作。我做错了什么?也许这是一个错误?

[编辑]
我查看了源代码并做了一些调试工作,看来init事件是在附加任何侦听器之前触发的。创建欧芹实例的过程类似:
  • $ .fn.parsley被称为
    -创建新的ParsleyFactory,调用init fn
    --- ParsleyFactory.prototype.init验证配置等,并调用bind fn
    ---- ParsleyFactory.prototype.bind决定要创建的构造函数(ParsleyForm,ParsleyField或ParsleyMultiple)
    -----调用新的ParsleyForm并返回实例
    ---- ParsleyFactory.prototype.bind 触发初始化事件并返回实例
    -ParsleyFactory.prototype.init返回实例
    -ParsleyFactory构造函数返回实例
  • $ .fn.parsley返回实例
  • .on('field:init',function(){...})被绑定(bind)
  • 最佳答案

    我遇到了同样的问题,感谢您对触发事件的研究,我找到了解决方案。只要将事件处理程序绑定(bind)到window.Parsley对象,它就可以正常工作。

    例如:

    window.Parsley.on('form:init', () => console.log('form:init'))
    

    10-04 22:49
    查看更多