Функция Javascript не вызывается в Drupal 7, которая раньше работала правильно в Drupal 6

Я нахожусь в процессе переноса своего сайта с Drupal 6 на Drupal 7. В результате я столкнулся с некоторыми проблемами с кодом. Вызов javascript с добавлением jquery и т. Д. В Drupal 7 отличается от того, что я читал. Это изображение страницы, которое у меня было в Drupal 6. Об изменении раскрывающегося списка поле, таблица над ней заполняется проектами, относящимися к этому статусу. Это отлично работает в Drupal 6. Но в Drupal 7 я вижу эту ошибку javascript.

Это элемент формы для раскрывающегося списка в моем файле php.

<? 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.

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

Эти теги не были нужны в 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 — раскрывающийся список, который нас интересует.

Хотел бы получить ваши предложения относительно того, какие дополнительные изменения необходимо сделать для правильного вызова javascipt в Drupal 7.


person Angela Sim    schedule 13.02.2012    source источник


Ответы (1)


Так должно быть

(function($) {

Нет

(function$ {

У вас синтаксическая ошибка. Первый создает экземпляр функции, так что ее первый аргумент будет доступен через символ $ в ее теле кода. Функция вызывается после тела:

  // ...
})(jQuery);

и глобальный объект "jQuery" передается в качестве аргумента. Эта настройка гарантирует доступ вашего кода к правильной структуре (то есть к jQuery) через общий символ «$», не беспокоясь о другой внешней привязке для «$».

person Pointy    schedule 13.02.2012
comment
Спасибо Pointy, благодаря этому ошибка для ошибки броска javascript была устранена. Но метод Jquery не отражает. Я подниму новый вопрос для того же. - person Angela Sim; 13.02.2012
comment
Привет, Пойнти, я хотел бы узнать ваше мнение по этому связанному с моим вопросом stackoverflow.com/questions/9264892/ - person Angela Sim; 14.02.2012