我使用jquery验证来验证js代码看起来像这样的表单:
form.validate({
messages: {
years_of_experience: {
range: "<?php echo Translation::tr('profileform.error.yearsOfExperience');?>"
}
},
rules: {
years_of_experience: {
range: [0, 100]
}
}
});
翻译:: tr(&#39; profileform.error.yearsOfExperience&#39;) - &gt;对数据库进行简单的mysql调用并返回一个字符串(元素的错误消息),但问题是我无法显示错误消息(我得空白)。
如果我改变像这样的javasctipt代码它可以正常工作:
form.validate({
messages: {
years_of_experience: {
range: "Please select a number from 0 to 100"
}
},
rules: {
years_of_experience: {
range: [0, 100]
}
}
});
你能帮助我吗?
谢谢
答案 0 :(得分:0)
PHP代码周围的引号告诉javascript&#39; s只是一个字符串,没有任何东西可以解释它。 尝试
form.validate({
messages: {
years_of_experience: {
range: <?php echo json_encode( Translation::tr('profileform.error.yearsOfExperience') ); ?>;
}
},
rules: {
years_of_experience: {
range: [0, 100]
}
}
});
它很丑......但这应该有用。
答案 1 :(得分:0)
最初的问题几乎与jQuery Validate无关,也与PHP有关,因为在PHP评估之前,页面是由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之间的数字