本文介绍了在 Drupal 7 中未调用 Javascript 函数,该函数曾经在 Drupal 6 中正常运行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在将我的 Drupal 6 站点迁移到 Drupal 7.因此,我遇到了一些代码问题.在 Drupal 7 中调用带有 jquery 等的 javascript 是不同的,这是我读过的.这是我在 Drupal 6 中的页面图像.在更改下拉框时,它上面的表格会填充属于该列表的项目地位.这在 Drupal 6 中运行良好.但在 Drupal 7 中,我看到 这个 javascript 错误.

I am in the process of migrating my Drupal 6 site to Drupal 7. As a result i am facing some issues with the code.The calling of javascript laced with jquery etc is different in Drupal 7 is what i have read.This is the image of the page i had in Drupal 6.On change of the dropdown box, the table above it gets populated with projects belonging to thatstatus. This works fine in Drupal 6.But in Drupal 7 i see this javascript error.

这是我的 php 文件中 Dropdown 的表单元素.

This is the form element for the Dropdown in my php file.

<? php
 $form['status_list'] = array(
'#type' => 'select',
'#title' => t('Freeway Project Statuses'),
'#options' => array(
  0 => t('-Select Status-'),
  1 => t('Draft'),
  2 => t('NotSpecified'),
  3 => t('Quote'),
  4 => t('Forecasted'),
  5 => t('InEvaluation'),
  6 => t('Cancelled'),
  7 => t('Booked'),
  8 => t('InProduction'),
  9 => t('Completed'),
  10 => t('Closed'),
 ),
 '#default_value' => array('0' => 'Select Status'),
 '#weight' => 0,
);

这就是 JavaScript我已经用 Drupal 7 的附加标签对其进行了修改

And this is the JavaScriptI have modified it with the additional tags for Drupal 7

 (function$){ .. })(jQuery); .

Drupal 6 中不需要这些标签.

These tags were not needed in Drupal 6.

      (function$){
    $(document).ready(function () {
     $("#edit-status-list").change(function() {
     var selectedStatus = $(this).find(":selected").text();
     var charExists = ((window.location.href).indexOf('?') >= 0) ? true : false;

    if(charExists){
    var split = (window.location.href).split('?');
    var loc = split[0];

      loc = loc+"?status="+selectedStatus;
    self.location.href= loc;

    }

    else{
     var locf = window.location.href+"?status="+selectedStatus;
     self.location.href= locf;

     }

     });

     $("#create-freeway-project").submit(function() {
      $(":submit", this).attr("disabled", "disabled");

     });

    $(".common_link_class").click(function() {
          //alert("Hello");

       var count = ($(this).data("clicks") || 0) + 1;
       $(this).data("clicks", count);


        if ($(this).data("clicks") >= 1) {

       }


       if ($(this).data("clicks") >= 2) {

         return false;
       }
     });


      $("#edit-analysis-code-one").change(function () {
        // Get the configs and split them.
        var cfgs = _get_configs("edit-custRef");
        var split_cfgs = cfgs.split('/');

        // Create some new configs and put it back into the configs  textfield.
        //var new_cfgs = $(this).val() +"/"+ cfgs[1];
        var new_cfgs = $("#edit-analysis-code-one option:selected").text() +"/"+ cfgs[1];

        $("#edit-custRef").val(new_cfgs);
      });

      $("#edit-analysis-code-two").change(function () {
        // Get the configs and split them.
        var cfgs = _get_configs("edit-custRef");
        var split_cfgs = cfgs.split('/');

        // Create some new configs and put it back into the configs textfield.
        //var new_cfgs = cfgs[0] +"/"+ $(this).val();
        var new_cfgs = cfgs[0] +"/"+ $("#edit-analysis-code-two option:selected").text()
        $("#edit-custRef").val(new_cfgs);
     });


   });

 })(jQuery);


(function$){
function _get_configs(id) {

  return $("#"+ id).val();

}
})(jQuery);

#edit_status_list 是我们感兴趣的下拉菜单.

#edit_status_list is the dropdown of our interest.

希望您对在 Drupal 7 中正确调用 javascipt 需要做哪些额外更改提出建议

Would like to have your suggestions as to what additional change needs to be done for proper javascipt calling in Drupal 7

推荐答案

应该是

(function($) {

没有

(function$ {

你得到的是一个语法错误.第一个实例化一个函数,使其第一个参数可以通过其主体代码中的符号 $ 获得.函数在body之后调用:

What you've got is a syntax error. The first one instantiates a function such that its first argument will be available via the symbol $ in its body code. The function is invoked after the body:

  // ...
})(jQuery);

全局jQuery"对象作为参数传入.此设置可确保您的代码通过常见的$"符号访问正确的框架(即 jQuery),而不必担心$"的另一个外部绑定.

and the global "jQuery" object is passed in as the argument. This setup assures your code access to the correct framework (that is, to jQuery) via the common "$" symbol without having to worry about another external binding for "$".

这篇关于在 Drupal 7 中未调用 Javascript 函数,该函数曾经在 Drupal 6 中正常运行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-26 07:40
查看更多