使用parsley.js验证动态创建的字段

奥雷77

我使用Backbone,Marionette和Parsley.js创建了一个表单,可以在其中动态添加输入。但是,当我添加一个新字段时,欧芹data-parsley-trigger似乎无法在其上验证字段focusout(我认为是因为输入是在欧芹初始化之后创建的)。但是当我单击验证时验证有效(因为parsley()在整个表单上被调用)

那么,如何根据新属性的属性处理新字段并使用验证事件(触发)呢?

MyApp = new Backbone.Marionette.Application;
MyApp.addInitializer(function(options) {
  var vent = new Backbone.Wreqr.EventAggregator();
  var layout = new AppLayout();
  MyApp.addRegions({
    appRegion: '#page'
  });
  MyApp.appRegion.show(layout);

  var collection = new ScheduleCollection();
  var scheduleLayout = new ScheduleLayout({
    vent: vent,
    collection: collection
  });
  layout.main.show(scheduleLayout);
});

var AppLayout = Backbone.Marionette.LayoutView.extend({
  template: "#app-layout-template",
  regions: {
    main: "#main",
    second: "#second"
  }
});

var ScheduleItemModel = Backbone.Model.extend({
  defaults: {
    date: "01/02/2016"
  }
});
var ScheduleCollection = Backbone.Collection.extend({
  model: ScheduleItemModel
});

var ScheduleItemView = Backbone.Marionette.ItemView.extend({
  tagName: "li",
  className: "sheduleblock",
  template: "#schedule-item-template",
  events: {
    "click .date": "changeDate",
    "click #remove-btn": "removeView"
  },
  modelEvents: {
    "change": "render"
  },
  changeDate: function() {
    this.model.set({
      date: "03/04/2016"
    });
  },
  removeView: function(e) {
    this.triggerMethod("remove:view", "test");
  }
});
var ScheduleLayout = Backbone.Marionette.CompositeView.extend({
  tagName: 'form',
  template: "#schedule-layout-template",
  childViewContainer: "ul",
  childView: ScheduleItemView,
  maxChildViewCount: 3,
  ui: {
    btn: '#myButton',
    submit: '#submit',
    form: 'form'
  },
  events: {
    'click @ui.btn': 'addItem',
    'click @ui.submit': 'validate'
  },
  initialize: function() {
    this.collection.set({
      'removeable': false
    });
  },
  addItem: function() {
    if (this.collection.size() < this.maxChildViewCount) {
      this.collection.add({
        removeable: true,
        viewId: this.collection.size()
      });
    }
    if (this.collection.size() >= this.maxChildViewCount) {
      this.ui.btn.prop("disabled", true)
    }
  },
  onChildviewRemoveView: function(childView, data) {
    this.collection.remove(childView.model);
    if (this.collection.size() < this.maxChildViewCount) {
      this.ui.btn.prop("disabled", false)
    }
  },
  validate: function(e) {
    e.preventDefault();
    if (this.$el.parsley().validate()) {
      alert("validation success");
    } else {
      alert("validation failed");
    }
  },
  onRender: function() {
    this.$el.parsley();
  }
});

MyApp.start();
body {
  margin: 0
}
.sheduleblock {
  border: solid 1px white;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.3.3/backbone.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.marionette/2.4.5/backbone.marionette.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/parsley.js/2.3.9/parsley.min.js"></script>

<div id="page"></div>
<script type="text/template" id="app-layout-template">
  <div id="main"></div>
  <div id="second"></div>
</script>
<script type="text/template" id="schedule-layout-template">
  <ul></ul>
  <button id="myButton" type="button">Add Date</button>
  <button type="button" id="submit">Validate</button>
</script>
<script type="text/template" id="schedule-item-template">
  Test:
  <input type="text" name="test<%- obj.viewId %>" data-parsley-required="true" data-parsley-minlength="3" data-parsley-trigger="focusout" />
  <% if(obj.removeable===true) { %>
    <button id="remove-btn">Remove</button>
    <% } %>
</script>

马克·安德烈·拉福尔敦

的确,它可能更容易记录。当前最简单的方法可能是在添加表单元素后询问Parsley表单是否有效:$('.your-form').parsley().isValid()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Parsley JS验证文件输入?

来自分类Dev

使用parsley.js,如何验证页面加载后添加的字段?

来自分类Dev

使用Parsley.js验证选择的多项选择

来自分类Dev

使用Parsley.js验证选择的多项选择

来自分类Dev

仅使用parsley.js在提交时验证表单

来自分类Dev

如何使用parsley.js订阅单个字段?

来自分类Dev

使用Parsley.js时出现字段错误重复

来自分类Dev

使用Parsley.js将两个验证器添加到动态克隆的字段时遇到两个错误

来自分类Dev

验证Parsley.js中的链接字段

来自分类Dev

验证Parsley.js中的链接字段

来自分类Dev

Parsley JS 强制字段无法验证状态

来自分类Dev

如何动态添加和删除要由Parsley.js验证的表单字段?

来自分类Dev

使用Parsley.js-2.0.0-rc4在data-parsley-mincheck =“ 2”上不起作用

来自分类Dev

在表格的某些区域使用parsley.js吗?

来自分类Dev

Parsley.js 2.0如何使用提供的css文件

来自分类Dev

使用parsley.js添加自定义CSS类

来自分类Dev

如何使用parsley.js添加多个基于模式的验证器?

来自分类Dev

Parsley.js如果值为空,请勿使用远程验证

来自分类Dev

使用parsley.js进行html表单验证后的彩色提交按钮

来自分类Dev

使用Parsley.js仅验证ASP.net页上的一种表单

来自分类Dev

使用Parsley.js自定义验证器检查字符串

来自分类Dev

Parsley JS 2.x-如何验证隐藏字段?

来自分类Dev

Parsley JS 2.x-如何验证隐藏字段?

来自分类Dev

通过使用parsley.js每个字段提供多个自定义错误消息支持

来自分类Dev

如何使用Parsley.js成功更改每个字段的CSS属性

来自分类Dev

Parsley.js销毁并重新验证已经验证的字段

来自分类Dev

如何覆盖Parsley.js默认配置以在整个项目中使用

来自分类Dev

使用parsley.js 2.x排除不可见的输入

来自分类Dev

如何覆盖Parsley.js默认配置以在整个项目中使用

Related 相关文章

  1. 1

    如何使用Parsley JS验证文件输入?

  2. 2

    使用parsley.js,如何验证页面加载后添加的字段?

  3. 3

    使用Parsley.js验证选择的多项选择

  4. 4

    使用Parsley.js验证选择的多项选择

  5. 5

    仅使用parsley.js在提交时验证表单

  6. 6

    如何使用parsley.js订阅单个字段?

  7. 7

    使用Parsley.js时出现字段错误重复

  8. 8

    使用Parsley.js将两个验证器添加到动态克隆的字段时遇到两个错误

  9. 9

    验证Parsley.js中的链接字段

  10. 10

    验证Parsley.js中的链接字段

  11. 11

    Parsley JS 强制字段无法验证状态

  12. 12

    如何动态添加和删除要由Parsley.js验证的表单字段?

  13. 13

    使用Parsley.js-2.0.0-rc4在data-parsley-mincheck =“ 2”上不起作用

  14. 14

    在表格的某些区域使用parsley.js吗?

  15. 15

    Parsley.js 2.0如何使用提供的css文件

  16. 16

    使用parsley.js添加自定义CSS类

  17. 17

    如何使用parsley.js添加多个基于模式的验证器?

  18. 18

    Parsley.js如果值为空,请勿使用远程验证

  19. 19

    使用parsley.js进行html表单验证后的彩色提交按钮

  20. 20

    使用Parsley.js仅验证ASP.net页上的一种表单

  21. 21

    使用Parsley.js自定义验证器检查字符串

  22. 22

    Parsley JS 2.x-如何验证隐藏字段?

  23. 23

    Parsley JS 2.x-如何验证隐藏字段?

  24. 24

    通过使用parsley.js每个字段提供多个自定义错误消息支持

  25. 25

    如何使用Parsley.js成功更改每个字段的CSS属性

  26. 26

    Parsley.js销毁并重新验证已经验证的字段

  27. 27

    如何覆盖Parsley.js默认配置以在整个项目中使用

  28. 28

    使用parsley.js 2.x排除不可见的输入

  29. 29

    如何覆盖Parsley.js默认配置以在整个项目中使用

热门标签

归档