0

我想知道是否有人可以帮助我更新此处详述的代码(http://oif.eafarris.com/blog/pre-fill-cck-node-fields-based-on-a-node-re... ) 对于 Drupal 7。那篇文章中描述的功能与我希望在我的 Drupal 7 站点上执行的功能相同,但我对自己的编程不够精通。

我有一个内容类型事件。在事件的节点创建表单上,我有一个“客户端”的自动完成字段。下面是名称、地址等的附加字段。我希望在这里实现的最终结果是:

  1. 用户在自动完成客户端字段中输入客户端名称。

  2. 输入的客户端名称与现有客户端匹配并被选中。

  3. 使用所选客户端的节点 ID,然后自动填充地址字段。

我有一个带有 nid 参数的 JSON 视图,它在 URL http://domain.com/json-clients/[nid] 处吐出所需的字段。但我无法将该信息返回到表单上的正确字段。

下面是我修改后的代码,试图让它与 D7 一起工作。有人看到明显的错误并愿意提供帮助吗?

(function ($) {
    Drupal.behaviors.sponsorhelper = function () {
        $("input[name='field_client[und][0][nid]']").blur(function() {

            nidRegEx = /\[nid:(\d+)\]/;

            SponsorHelper.fill($(this).attr('value').match(nidRegEx)[1]);

        })
    };

    SponsorHelper.fill = function(nid) {
        var url = Drupal.settings.basePath + 'json-clients/' + nid;

        jQuery.getJSON(url, function (data, result) {
            if (result != 'success') {
                return;
            }

            $("input[name='field_address_1[und][0][value]']")
                .attr('value',data.nodes[0].node.field_address_1_value);

            $("input[name='field_address_2[und][0][value]']")
                .attr('value',data.nodes[0].node.field_address_2_value);
        })
    };
})(jQuery);

任何帮助是极大的赞赏。

谢谢。

4

1 回答 1

0

与其编写自己的 javascript,不如尝试使用几个 drupal 的社区模块来处理这个问题。查看: http: //drupal.org/project/conditional_fields http://drupal.org/project/computed_field/

您可以使用条件字段隐藏地址,直到输入客户信息。然后使用计算字段搜索客户并自动填写地址字段。

于 2012-08-17T23:50:51.853 回答