Javascript [contenteditable]元素和jQuery验证插件存在问题
我准备了一个,它演示了Javascript [contenteditable]元素和jQuery验证插件存在问题,javascript,jquery,forms,jquery-validate,contenteditable,Javascript,Jquery,Forms,Jquery Validate,Contenteditable,我准备了一个,它演示了[contenteditable]元素没有HTML表单。对我来说,这是个问题,因为jQuery验证插件需要表单。查看从383行开始的源代码片段: function delegate( event ) { var validator = $.data( this.form, "validator" ), eventType = "on" + event.type.replace( /^validate/, "" ), settings
[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]
侦听事件,然后调用委托
事件处理程序
当[contenteditable]
触发此列表中的某个事件时,委托
方法尝试从元素var validator=$.data(this.form,“validator”)
获取验证器,但正如我前面所说的[contenteditable]
没有表单(请参见)
有没有办法解决这个问题?是否可以向所有
[contenteditable]
元素添加表单?探索validate的ignore选项是否可以解决您的问题
ignore: ":hidden:not('#summernote')"
更新的fiddle-这是jquery验证程序插件中的一个已知错误。然而,这一点现在已经在本中得到了修复,应该很快就会发布 修正1: 如果您不能等待发布,修复方法是将此代码放在
delegate()
方法的开头。解决方案由@svrx
制定
// Set form expando on contenteditable
if ( !this.form && this.hasAttribute( "contenteditable" ) ) {
this.form = $( this ).closest( "form" )[ 0 ];
}
正如您所看到的,修复方法只是将表单设置为父元素
修正2:
正如
@chrisAtomix
在他的文章中所说,不要使用最新的jquery验证程序插件
。如果未添加contenteditable
功能,请改用较低版本。他正在使用v1.14.0
谢谢。现在我使用v1.14.0
并等待发布