Foundation-sites: [遵守] [F6.1.1] 验证不适用于动态加载的元素

创建于 2016-01-10  ·  3评论  ·  资料来源: foundation/foundation-sites

Abide 不验证动态加载的输入。 这是自定义表单、动态加载表单和使用data-reset-on-close="true"的 Reveal modal 的示例。

https://jsfiddle.net/sxudkx2n/4/

javascript

最有用的评论

如果您动态添加新表单,这两种方法都将初始化 abide,但如果您在现有表单中添加新字段,则它们都不起作用。 如果您以现有协议的形式运行基金会,您将收到基金会的警告。 如果您以这种形式破坏基础并重新运行它,则不会发生任何变化。
如果您在带有 abide 的表单中添加新字段,您只需运行 Foundation.reInit('abide') 以通知基金会有关新项目的信息。
如果这是设计使然,那没关系,但我更喜欢在添加新内容后重新初始化遵守某种形式的方法。

所有3条评论

这不是一个错误,它确实适用于动态加载的内容,你只需要通知 Foundation 你添加了一些东西。 $(document).foundation();在执行该函数时初始化页面上的插件,如果您向页面添加新内容,无论是通过 ajax 还是模态重新加载内容,您都需要让 Foundation 知道。
$.fn.foundation没有设置监视任务或任何检查正在加载的新内容的东西,这样做的开销将非常昂贵,并且页面性能会受到影响。
总之,如果您通过 AJAX 加载,请执行以下操作:

$.ajax(..., function(someContent){
  $('body').append(someContent);
// add this line ⌄
  $(someContent).foundation();
});

同样,利用 Foundation 中的事件发射器,您可以为您的模态执行以下操作:

$('.modal-class').on('open.zf.reveal', function(){
  $(this).foundation();
});

这两种方法都将初始化任何尚未在 Foundation 注册的插件,这些插件包含在它们各自的元素中。

如果您动态添加新表单,这两种方法都将初始化 abide,但如果您在现有表单中添加新字段,则它们都不起作用。 如果您以现有协议的形式运行基金会,您将收到基金会的警告。 如果您以这种形式破坏基础并重新运行它,则不会发生任何变化。
如果您在带有 abide 的表单中添加新字段,您只需运行 Foundation.reInit('abide') 以通知基金会有关新项目的信息。
如果这是设计使然,那没关系,但我更喜欢在添加新内容后重新初始化遵守某种形式的方法。

@grapto谢谢先生,这就是我要找的东西:

Foundation.reInit('abide')

必须在将新元素动态添加到需要验证的表单后运行。

此页面是否有帮助?
0 / 5 - 0 等级