javascript – 表单init和字段init事件在parsley.js中不起作用

这是一个简单的例子:
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
    });
});

似乎form:init或field:init回调函数根本没有调用,而任何其他函数都可以正常工作.我做错了什么?或许这是一个错误?

[编辑]
我查看了源代码并做了一些调试工作,似乎在连接任何侦听器之前触发了init事件.创建欧芹实例看起来很相似:

> $.fn.parsley被调用
– 创建新的ParsleyFactory,调用init fn
— ParsleyFactory.prototype.init验证配置等并调用bind fn
—- ParsleyFactory.prototype.bind决定创建哪个构造函数(ParsleyForm,ParsleyField或ParsleyMultiple)
—–调用新的ParsleyForm并返回实例
—- ParsleyFactory.prototype.bind触发init事件并返回实例
— ParsleyFactory.prototype.init返回实例
– ParsleyFactory构造函数返回实例
> $.fn.parsley返回实例
> .on(‘field:init’,function(){…})被绑定

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

例如:

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