将 jquery 版本从 2.1 升级到 3 后,淘汰验证自定义规则不起作用
Posted
技术标签:
【中文标题】将 jquery 版本从 2.1 升级到 3 后,淘汰验证自定义规则不起作用【英文标题】:Knockout Validation Custom rules are not working after upgrading jquery version from 2.1 to 3 【发布时间】:2021-02-17 22:26:08 【问题描述】:我正在使用淘汰赛 3.2 。我有一个添加了自定义淘汰规则的字段,该规则从 ajax 调用中获取其值。它在 Jquery 2.1 版中运行良好。但是当我将 jquery 版本升级到 3.0 时,它不知何故停止了工作。下面是示例代码。
现场验证
self.ViewModel.Id.extend(
idExist:param:true
);
自定义规则(使用参数 async:false 完成 ajax 调用)
ko.validation.rules.idExist =
validator:function(id, validate)
var idExist = false;
$.when(
$.ajax())
.then(function(data)
idExist = data;
);
return idExist ;
,
message:"Id not exist"
经过一番分析,发现jquery升级后,validator并没有等待ajax调用结束,直接返回idExist =false。
有什么想法吗?谢谢。
【问题讨论】:
将return语句放入then函数... 尝试了同样的方法,但问题仍然存在。 【参考方案1】:通过添加 async:true.PFB 更新的代码,问题得到解决。
validator:function(id, validate)
var idExist = false;
$.when(
$.ajax())
.then(function(data)
idExist = data;
);
return;
,
message:"Id not exist",
async:true
【讨论】:
以上是关于将 jquery 版本从 2.1 升级到 3 后,淘汰验证自定义规则不起作用的主要内容,如果未能解决你的问题,请参考以下文章