关于Uncaught TypeError: Cannot read property 'message' of undefined错误
抱歉各位,最近发现使用callback的时候必须要返回一个boolean值,验证通过必须返回true,否则返回false
如果不返回值就会js报错 【Uncaught TypeError: Cannot read property 'message' of undefined】
感谢CSDN帖子:https://blog.csdn.net/qq_21358931/article/details/78914960#updatemessage
最近在用bootstrapvalidator,业务要求验证一个字段,该字段需要与多个输入框的值进行比较判断,要改变提示消息,从09.18研究到09.19上午研究了一天多,百度上基本是找不到,bootstrapvalidator的api也找不到,网页打不开要挂梯子,难受呀,后来看了到大佬帖子搞定了:
我这里总结一下吧,主要使用validator.updateMessage();方法
validator.updateMessage('fildName如name','validator如callback','message如"不能含有关键字123"');
fields: {
name: {
tigger: 'change',
validators: {
notEmpty: {
message: '请输入name'
},
callback: {
message: 'name验证不通过',
callback: function(value, validator) {
if (value.indexOf('name') != -1) {
validator.updateMessage('name', 'callback', '不能含有关键字name');
return false;
}
if (value.indexOf('123') != -1) {
validator.updateMessage('name', 'callback', '不能含有关键字123');
return false;
}
return true;
}
}
}
}
}
不过大佬的意思是要修改源码,不然会出问题,我都试了没发现什么问题
我这里说明下源码的修改吧,因为源码里的代码都是压缩过没有格式的,所以我是把大佬的代码改为一个三元表达式了!
主要就是将bootstrapValidator.js和bootstrapValidator.min.js的
a(this).data("bv.messages").find('.help-block[data-bv-validator="'+c+'"][data-bv-for="'+b+'"]').html(d)
改为一个三元表达式
a(this).data('bv.messages').find('.help-block[data-bv-validator="'+c+'"][data-bv-for="'+b+'"]').find(".tip_message").html() == undefined ? a(this).data("bv.messages").find('.help-block[data-bv-validator="'+c+'"][data-bv-for="'+b+'"]').html(d) : a(this).data('bv.messages').find('.help-block[data-bv-validator="'+c+'"][data-bv-for="'+b+'"]').find(".tip_message").html(d);
这里把我写的一个测试页面的代码贴出来:
以下代码都有在线引用js和css
<!DOCTYPE html>
<html lang="