如何把php字符串jQuery验证错误信息

时间:2014-12-19 12:44:30

标签: javascript php jquery jquery-validate

我使用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]
            }
        }
});  

你能帮助我吗?

谢谢

2 个答案:

答案 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之间的数字