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

时间:2016-07-07 08:30:52

标签: javascript jquery parsley.js validating

以下是一个简单示例: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(&#39;字段:init&#39;,function(){...})受到约束

1 个答案:

答案 0 :(得分:2)

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

例如:

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