Php 向脚本添加动态javascript变量
背景:我有一个jQuery验证脚本,它几乎用于我的所有网页,允许客户端验证(我也做服务器端验证)。javascript对于我的所有页面都是一样的,除了每个表单的特定“规则” 在呈现HTML页面之前,每个页面的规则都会从我的控制器插入到php变量$jquery\u validation中。这意味着我可以使用适当的客户端验证规则动态生成每个html页面和表单 下面是我的javascript代码,当前已加载到我的所有html页面上:Php 向脚本添加动态javascript变量,php,javascript,jquery,validation,Php,Javascript,Jquery,Validation,背景:我有一个jQuery验证脚本,它几乎用于我的所有网页,允许客户端验证(我也做服务器端验证)。javascript对于我的所有页面都是一样的,除了每个表单的特定“规则” 在呈现HTML页面之前,每个页面的规则都会从我的控制器插入到php变量$jquery\u validation中。这意味着我可以使用适当的客户端验证规则动态生成每个html页面和表单 下面是我的javascript代码,当前已加载到我的所有html页面上: $(document).ready(function(){
$(document).ready(function(){
$('#signupform').validate({
wrapper: 'span class="error"',
meta: 'validate',
highlight: function(element, errorClass, validClass) {
if (element.type === 'radio') {
this.findByName(element.name).addClass(errorClass).removeClass(validClass);
} else {
$(element).addClass(errorClass).removeClass(validClass);
}
var error = $(element).parent().find('span.error');
error.show();
},
unhighlight: function(element, errorClass, validClass) {
if (element.type === 'radio') {
this.findByName(element.name).removeClass(errorClass).addClass(validClass);
} else {
$(element).removeClass(errorClass).addClass(validClass);
}
$(element).parent().find('span.error').hide(0, function() {
$(element).parent().find('span.valid').fadeIn(200);
});
},
<?=$jquery_validation?>);});
</script>
功能正在运行,一切正常
问题:是否有办法在.js文件中包含我的验证javascript函数(以便对其进行压缩等),并且仍然动态加载每个页面验证的“规则”部分
如果需要,我可以更改$jquery\u验证的“输出”和语法-但关键是我需要能够动态输出每个页面的规则您可以将javascript代码放入任何
.js
文件中,并对其进行压缩,它可以对HTML页面中的数据进行操作。这两个文件不必在同一个文件中。如果您的代码在加载时执行,您只需确保它在页面中定义代码后首先运行,通过在代码进入页面后物理定位它,或者在执行代码之前等待页面加载。您可以将javascript代码放入任何.js
文件中,并对其进行压缩,然后对HTML页面中的数据进行操作。这两个文件不必在同一个文件中。如果代码在加载时执行,您只需确保它在页面中定义代码后首先运行,方法是在代码进入页面后进行物理定位,或者在执行代码之前等待页面加载。是,您可以创建一个对象并将其保存到一个变量中,还可以保存构造函数中的详细信息(不记得它在JS中的调用)
下面是我在一个脚本中使用的一个示例
var rmlsSearch = function(searchEndpoint) {
this.fname = '';
this.lname = '';
this.searchEndpoint = searchEndpoint;
this.resultTemplate = $('#rmls-search-result-template').html();
//Preform inital search
this.searchAgent();
//Bind search function to search button
$('#rmls-search-button').one('click', $.proxy(this.searchAgent, this));
};
有了这个定义,你就可以在任何你想要的地方实例化它,并传递你需要的任何细节
var rmlsHandle = rmlsSearch("some endpoint I'm planning on using");
搜索代理函数,原型化到对象中:
rmlsSearch.prototype.searchAgent = function(){
//Get the agent details from the form on the page
this.getAgentDetails();
//... Whatever else you'd need to do in the function
};
是的,您可以创建一个对象并将其保存到一个变量中,还可以保存构造函数中的详细信息(不记得它在JS中的调用) 下面是我在一个脚本中使用的一个示例
var rmlsSearch = function(searchEndpoint) {
this.fname = '';
this.lname = '';
this.searchEndpoint = searchEndpoint;
this.resultTemplate = $('#rmls-search-result-template').html();
//Preform inital search
this.searchAgent();
//Bind search function to search button
$('#rmls-search-button').one('click', $.proxy(this.searchAgent, this));
};
有了这个定义,你就可以在任何你想要的地方实例化它,并传递你需要的任何细节
var rmlsHandle = rmlsSearch("some endpoint I'm planning on using");
搜索代理函数,原型化到对象中:
rmlsSearch.prototype.searchAgent = function(){
//Get the agent details from the form on the page
this.getAgentDetails();
//... Whatever else you'd need to do in the function
};
PHP需要由浏览器呈现才能执行动态内容。因此,尝试将PHP放入外部js文件将不会被读取。PHP需要由浏览器呈现才能执行动态内容。因此,尝试将PHP放入外部js文件不会被读取。或者您可以这样做:
var _pageValidationRules = <?php echo $jquery_validation; ?>
// Code below can be compressed
$(function() {
$('#signupform').validate({
wrapper: 'span class="error"',
meta: 'validate',
highlight: function(element, errorClass, validClass) {
// ...
},
unhighlight: function(element, errorClass, validClass) {
// ...
}
rules: _pageValidationRules
});
});
var\u页面验证规则=
//下面的代码可以压缩
$(函数(){
$(“#注册表单”)。验证({
包装器:“span class=“error”,
meta:'验证',
突出显示:函数(元素、errorClass、validClass){
// ...
},
取消高亮显示:函数(元素、errorClass、validClass){
// ...
}
规则:_页面验证规则
});
});
或者您可以这样做:
var _pageValidationRules = <?php echo $jquery_validation; ?>
// Code below can be compressed
$(function() {
$('#signupform').validate({
wrapper: 'span class="error"',
meta: 'validate',
highlight: function(element, errorClass, validClass) {
// ...
},
unhighlight: function(element, errorClass, validClass) {
// ...
}
rules: _pageValidationRules
});
});
var\u页面验证规则=
//下面的代码可以压缩
$(函数(){
$(“#注册表单”)。验证({
包装器:“span class=“error”,
meta:'验证',
突出显示:函数(元素、errorClass、validClass){
// ...
},
取消高亮显示:函数(元素、errorClass、validClass){
// ...
}
规则:_页面验证规则
});
});
- 创建一个PHP脚本,该脚本将以JSON格式返回验证规则李>
- 使用脚本标记加载该脚本,它可能是PHP文件(为了提高性能,请设置正确的HTTP缓存设置,以便它保留在浏览器缓存中)
- 从外部JS静态文件加载验证逻辑
- 创建一个PHP脚本,该脚本将以JSON格式返回验证规则李>
- 使用脚本标记加载该脚本,它可能是PHP文件(为了提高性能,请设置正确的HTTP缓存设置,以便它保留在浏览器缓存中)
- 从外部JS静态文件加载验证逻辑
\u pageValidationRules
变量,这样当您的验证插件初始化时,它就可以使用您的规则。我唯一的问题是,不清楚是什么实际作用于这些值。我会将验证规则移动到外部文件,以减少HTML文件大小OK-因此,为了澄清-你说的“压缩”我的java代码,但把它放在我的html文件中,而不是单独放在.js文件中?你可以把代码放在html中,也可以放在单独的js文件中。没关系。只要确保在全局上下文中有可用的\u pageValidationRules
变量,这样当您的验证插件初始化时,它就可以使用您的规则。我唯一的问题是,不清楚这些值的实际作用是什么。是的-这是我的问题