0

ここ(http://oif.eafarris.com/blog/pre-fill-cck-node-fields-based-on-a-node-re ...)で詳しく説明されているコードの更新を誰かが手伝ってくれるかどうか疑問に思っています。 )Drupal 7の場合。その投稿で説明されている機能は、Drupal 7サイトで実行しようとしている機能と同じですが、プログラムで実行するのに十分な知識がありません。

コンテンツタイプがイベントです。イベントのノード作成フォームに、「クライアント」のオートコンプリートフィールドがあります。その下には、名前、住所などの追加フィールドがあります。ここで達成したいと思っている最終結果は次のとおりです。

  1. ユーザーは、オートコンプリートクライアントフィールドにクライアント名を入力します。

  2. 入力したクライアント名は既存のクライアントと一致し、選択されています。

  3. 選択したクライアントのノードIDを使用して、アドレスフィールドに自動的に入力されます。

URLhttp://domain.com/json-clients/[nid]に必要なフィールドを吐き出すnid引数を持つJSONビューがあります。しかし、その情報をフォームの正しいフィールドに返すことができません。

以下は、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 に答える