Drupal.attachBehaviors: правильный аргумент? (JavaScript / JQuery / Drupal 6) - PullRequest
0 голосов
/ 06 октября 2011

Я использую Drupal 6. Мне нужно добавить ссылку на удаление в DOM. Затем я хочу использовать Drupal.attachBehaviors в элементе ссылки удаления, который я только что добавил. Я прилагаю поведение к этой ссылке, чтобы я мог написать больше javascript для обработки этой ссылки. Когда я прикрепляю поведение, как у меня ниже, я получаю

Строка 10: ошибка типа Uncaught: Cannont вызывает метод replace вместо undefined

$ ("# edit-field-product-ref-provider-0-nid-nid", context) .val () возвращает значение NULL. Если я закомментирую строку Drupal.attachBehaviors ниже, ошибка исчезнет, ​​и team_current будет иметь ожидаемое мной значение.

  1. Правильно ли то, что я передаю Drupal.attachBehaviors?
  2. Можете ли вы сказать мне, почему строка Drupal.attachBehaviors вызывает ошибку в строке var team_current?

HTML, сгенерированный после выполнения JavaScript:

<div class="form-item" id="edit-field-product-ref-provider-0-nid-nid-wrapper">

  <input type="text" name="field_product_ref_provider[0][nid][nid]" id="edit-field-product-ref-provider-0-nid-nid" size="60" value="bw11 [nid:631]" class="form-text form-autocomplete text noderelationships-nodereference-autocomplete noderelationships[field_product_ref_provider] noderelationships-processed nodeRefUi-processed" autocomplete="OFF">

  <div class="noderelationships-nodereference-buttons-wrapper">
    <a href="javascript:void(0)" class="noderelationships-nodereference-create-button" title="Create a new support team listing and assign it to this product">Create a new support team listing and assign it to this product</a>
    <a href="javascript:void(0)" class="noderelationships-nodereference-remove-button" title="Remove support team from this product" style="">Remove support team from this product</a>
  </div>

</div>

Javascript:

(function ($) {
  // Store our function as a property of Drupal.behaviors.
  Drupal.behaviors.tsrNodeRefUi = function (context) {

    var team_current = $("#edit-field-product-ref-provider-0-nid-nid", context).val().replace(/\s\[nid:\d+\]/, ''); 
    var remove_button = '<a href="javascript:void(0)" class="noderelationships-nodereference-remove-button" title="Remove support team from this product">Remove support team from this product</a>';

    //Add Remove link...
    $(".noderelationships-nodereference-buttons-wrapper").append(remove_button);

    //Attach Behaviors
    Drupal.attachBehaviors($(".noderelationships-nodereference-remove-button"));
  };
}(jQuery));

1 Ответ

1 голос
/ 25 августа 2012

Ваша последняя строка:

Drupal.attachBehaviors($(".noderelationships-nodereference-remove-button"));

Должно быть:

Drupal.attachBehaviors(remove_button);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...