我正在使用jquery验证来验证一个表单,js代码看起来像这样:
form.validate({
messages: {
years_of_experience: {
range: "<?php echo Translation::tr('profileform.error.yearsOfExperience');?>"
}
},
rules: {
years_of_experience: {
range: [0, 100]
}
}
});
翻译::tr('profileform.error.yearsOfExperience'( ->对数据库进行简单的 mysql 调用并返回一个字符串(元素的错误消息(,但问题是我无法显示错误消息(我得到空白(。
如果我像这样更改 Javasctipt 代码,它可以正常工作:
form.validate({
messages: {
years_of_experience: {
range: "Please select a number from 0 to 100"
}
},
rules: {
years_of_experience: {
range: [0, 100]
}
}
});
你可以帮我吗?
谢谢
php代码周围的引号告诉javascsript它只是一个字符串,没有任何解释。尝试
form.validate({
messages: {
years_of_experience: {
range: <?php echo json_encode( Translation::tr('profileform.error.yearsOfExperience') ); ?>;
}
},
rules: {
years_of_experience: {
range: [0, 100]
}
}
});
好丑...但这应该有效。
最初的问题几乎与jQuery Validify无关,而与PHP有关,因为该页面早在任何JavaScript评估它之前就由PHP构建。 解决此问题的正确方法是查看浏览器中的源代码,以查看PHP出错的地方并相应地进行调整。 只要你看到一个字符串,jQuery Validate 就会使用该字符串。
但是,根据所需的消息,您根本不需要任何 PHP。 此插件会自动将rules
中的参数插入到messages
中。 第一个参数由 {0}
表示,第二个参数由 {1}
等表示。
messages: {
years_of_experience: {
range: "Please select a number from {0} to {1}"
}
},
rules: {
years_of_experience: {
range: [0, 100] // <- parameters
}
}
结果:
请选择0到100之间的数字