[contenteditable]元素和jQuery验证插件的问题
Problems with [contenteditable] elements and jQuery validation plugin
我准备了一个DEMO,它演示了[contenteditable]
元素没有HTML表单。对我来说,这是一个问题,因为jQuery验证插件需要表单。看看从383行开始的源代码片段:
function delegate( event ) {
var validator = $.data( this.form, "validator" ),
eventType = "on" + event.type.replace( /^validate/, "" ),
settings = validator.settings;
if ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {
settings[ eventType ].call( validator, this, event );
}
}
$( this.currentForm )
.on( "focusin.validate focusout.validate keyup.validate",
":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], " +
"[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], " +
"[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], " +
"[type='radio'], [type='checkbox'], [contenteditable]", delegate )
// Support: Chrome, oldIE
// "select" is provided as event.target when clicking a option
.on( "click.validate", "select, option, [type='radio'], [type='checkbox']", delegate );
在这里我们可以看到,个元素,其中一个是[contenteditable]
侦听事件,然后调用delegate
事件处理程序。
当[contenteditable]
触发该列表中的某个事件时,delegate
方法尝试从元素var validator = $.data( this.form, "validator" )
获取验证器,但正如我前面所说,[contenteditable]
没有形式(请参见DEMO)。
有什么办法解决这个问题吗?是否可以为所有[contenteditable]
元素添加表单?
这是jquery validator plugin
中的一个已知错误。然而,这已经在这个拉取请求中得到了修复,应该很快就会发布。
修复1:
如果您不能等待发布,则修复方法是将此代码放在delegate()
方法的开头。用CCD_ 11进行了求解。
// Set form expando on contenteditable
if ( !this.form && this.hasAttribute( "contenteditable" ) ) {
this.form = $( this ).closest( "form" )[ 0 ];
}
正如您所看到的,修复方法只是将窗体设置为父元素。
修复2:
正如@chrisAtomix
在评论中所说,不要使用最新的jquery validator plugin
。相反,使用未添加contenteditable
功能的较低版本。他正在使用v1.14.0
。
探索验证的忽略选项能解决问题吗?
ignore: ":hidden:not('#summernote')"
更新的小提琴-https://jsfiddle.net/z6eLvk0b/2/
相关文章:
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- jQuery验证插件submitHandler Ajax
- Jquery 验证插件 - 字段仍然产生错误
- 在使用 jQuery 验证插件进行验证后,使用 AJAX 提交表单
- 附加要使用的变量jQuery验证插件
- Jquery验证插件在与<发件人:form>标签
- jquery在动态表单输入上验证插件不起作用
- 表单验证消息(使用jQuery验证插件)
- jQuery验证插件-比较两个选择下拉列表的自定义方法
- jQuery验证插件,如果.is(“:已检查”),则需要该插件
- jQuery验证插件停止表单提交,提交按钮获胜'不起作用
- 如果选中了上一个复选框,则需要的验证插件
- jQuery表单验证插件's只有文字字段的问题
- Jquery验证插件两个按钮
- jquery验证插件-错误删除
- jQuery验证插件-表单不提交
- [contenteditable]元素和jQuery验证插件的问题
- 使用jquery验证插件检查数据库中是否存在电子邮件
- 如何从jQuery验证插件函数中删除AJAX
- 如何使用 Jquery 验证插件专门验证某个表单字段