gpt4 book ai didi

javascript - [contenteditable] 元素和 jQuery 验证插件的问题

转载 作者:行者123 更新时间:2023-11-27 23:08:37 24 4
gpt4 key购买 nike

我准备了一个DEMO 演示了 [contenteditable] 元素没有 HTML 表单。对于我来说,这是一个问题,因为 jQuery 验证插件需要表单。看源码片段from here从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 验证器插件 中的一个已知错误。不过,这个问题现在已在 pull request 中修复。 ,应该很快就会发布。

修复1:

如果您无法等待发布,解决方法是将此代码放在 delegate() 方法的开头。该解决方案是由 @svrx 制定的。

// Set form expando on contenteditable
if ( !this.form && this.hasAttribute( "contenteditable" ) ) {
this.form = $( this ).closest( "form" )[ 0 ];
}

如您所见,修复方法只是将表单设置为父元素。

修复 2:

正如@chrisAtomix在他的comments中所说,不要使用最新的 jquery 验证器插件。请改用未添加 contenteditable 功能的较低版本。他正在使用 v1.14.0

关于javascript - [contenteditable] 元素和 jQuery 验证插件的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36383647/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com