2011-10-21 13 views
0

私はFormAPIのUI要素を拡張するいくつかのモジュールを作成しました。正常にフォームをレンダリングすると、これは正常に動作します(AJAXではなく)。しかし、レンダリングされたフォームがAJAXリクエストを通じて配信される場合、JSスクリプトは$ .html関数を介してコードを挿入するだけです。だから私は、$ .htmlで評価されたスクリプトのIDで文書の要素にアクセスすることはできません。 Form/Ajax APIでJavaScriptコードを渡す方法はありますか?Drupal 7 + JSコードAJAX

答えて

0

私はjQuery( "#new-id")($(..)ではなく)は最新のdom要素を取るべきだと思います。 あなたが

$form['myitem'] = array(
'#type'=>'textfield', 
'#ajax' => array(
    'callback' => 'my_callback', 
    'wrapper' => 'new-id', 
    'method' => 'html', 
    'effect' => 'fade', 
), 
); 
$form['myitem2'] = array(
'#type'=>'markup', 
'#value'=>"<div id='new-id'> I'm #new-id </div>" 
); 


function my_callback(&$form, &$form_state){ 
    $commands = array(); 
    $commands[] = ajax_command_invoke('#new-id', 'html', array('<div id="new-id2">#new.id2 here!</div>')); 
    $commands[] = ajax_command_invoke('#new-id2', 'addClass', array('error')); 
    return array('#type' => 'ajax', '#commands' => $commands); 
} 

D7のajax_commandsフォームAPIのいずれかの 'AJAX' プロパティを使用することができます http://api.drupal.org/api/drupal/includes--ajax.inc/group/ajax_commands/7

+0

このヘルプを願っていますはい、それはそれです。しかし、問題はDialog APIによるjQuery(...)。html(...)呼び出しで、globalEval経由ですべてのスクリプトを実行してからDOMに要素を挿入するだけです。 – skayfar