Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 向脚本添加动态javascript变量_Php_Javascript_Jquery_Validation - Fatal编程技术网

Php 向脚本添加动态javascript变量

Php 向脚本添加动态javascript变量,php,javascript,jquery,validation,Php,Javascript,Jquery,Validation,背景:我有一个jQuery验证脚本,它几乎用于我的所有网页,允许客户端验证(我也做服务器端验证)。javascript对于我的所有页面都是一样的,除了每个表单的特定“规则” 在呈现HTML页面之前,每个页面的规则都会从我的控制器插入到php变量$jquery\u validation中。这意味着我可以使用适当的客户端验证规则动态生成每个html页面和表单 下面是我的javascript代码,当前已加载到我的所有html页面上: $(document).ready(function(){

背景:我有一个jQuery验证脚本,它几乎用于我的所有网页,允许客户端验证(我也做服务器端验证)。javascript对于我的所有页面都是一样的,除了每个表单的特定“规则”

在呈现HTML页面之前,每个页面的规则都会从我的控制器插入到php变量$jquery\u validation中。这意味着我可以使用适当的客户端验证规则动态生成每个html页面和表单

下面是我的javascript代码,当前已加载到我的所有html页面上:

$(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静态文件加载验证逻辑

      您可以创建一个php文件,使用标题告诉“这是一个Javascript”。使用这种方法,您甚至可以将验证值存储在数据库中。使用这种方法,您甚至可以将验证值存储在数据库中。我会将验证规则移动到外部文件,以减少HTML文件的大小。为了澄清这一点,您会说“压缩”我的java代码,但将其保留在我的HTML文件中,而不是单独保存在.js文件中。您可以将代码保留在HTML中,也可以移动到单独的js文件中。没关系。只要确保在全局上下文中有可用的
      \u pageValidationRules
      变量,这样当您的验证插件初始化时,它就可以使用您的规则。我唯一的问题是,不清楚是什么实际作用于这些值。我会将验证规则移动到外部文件,以减少HTML文件大小OK-因此,为了澄清-你说的“压缩”我的java代码,但把它放在我的html文件中,而不是单独放在.js文件中?你可以把代码放在html中,也可以放在单独的js文件中。没关系。只要确保在全局上下文中有可用的
      \u pageValidationRules
      变量,这样当您的验证插件初始化时,它就可以使用您的规则。我唯一的问题是,不清楚这些值的实际作用是什么。是的-这是我的问题