【发布时间】:2016-04-03 09:19:58
【问题描述】:
我准备了一个 DEMO 来演示 [contenteditable] 元素没有 HTML 表单。对我来说,这是一个问题,因为 jQuery 验证插件需要表单。从383行开始看源码sn -p from here:
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] 元素?
【问题讨论】:
标签: javascript jquery forms jquery-validate contenteditable