Abide 不验证动态加载的输入。 这是自定义表单、动态加载表单和使用data-reset-on-close="true"
的 Reveal modal 的示例。
这不是一个错误,它确实适用于动态加载的内容,你只需要通知 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')
必须在将新元素动态添加到需要验证的表单后运行。
最有用的评论
如果您动态添加新表单,这两种方法都将初始化 abide,但如果您在现有表单中添加新字段,则它们都不起作用。 如果您以现有协议的形式运行基金会,您将收到基金会的警告。 如果您以这种形式破坏基础并重新运行它,则不会发生任何变化。
如果您在带有 abide 的表单中添加新字段,您只需运行 Foundation.reInit('abide') 以通知基金会有关新项目的信息。
如果这是设计使然,那没关系,但我更喜欢在添加新内容后重新初始化遵守某种形式的方法。