1

通常のFormsAPIを使用して単純なフォームをまとめるコードがいくつかあります。jQuery Toolsパッケージを使用してこのフォームを生成し、オーバーレイに挿入しています。これは正常に機能していますが、公開されたら、入力フォーカスをフォームのテキストフィールドに設定したいと思います。<script type='text/javascript'>$('#textfieldID').focus();</script>フォームのテーマ関数のフォームの最後に、それを実行する必要のあるjQueryコードを追加しようとしまし たが、ページに読み込まれません。これは、Drupalの一部が「有用」であり、スクリプトを除外しているためだと思いますが、実際にはわかりません。いずれにせよ、コードは実行されません。コードの一部としてjavascript alert()ステートメントを挿入しても、何も起こりません。

何かアドバイスはありますか?私は本当にこの男に焦点を合わせたいです。ありがとう!

4

3 に答える 3

1

DrupalのAPIを使用して、。を使用してJavaScriptを含める必要がありますdrupal_add_js。フォームがキャッシュされている場合でも呼び出されるため、フォームのテーマ関数で実行するのが最善の方法です。

Drupalはスクリプトタグなどをフィルターで除外しないため、スクリプトタグが印刷されていない場合は、テーマ機能で何か問題が発生しているように聞こえます。

于 2011-02-25T16:30:13.610 に答える
0

私はこれが「答えられる」と宣言しています-深く掘り下げた後(=キーボードの血)、jQuery Toolsがここの原因であることがわかりました-Drupalによって作成されたフォームには、スクリプトのものがすべて含まれています私はそれに挿入します(最新のスキーム:フォームのマークアップ要素として$(document).ready(... focus ...))。jQTオーバーレイプロセスの途中で、スクリプトがなくなります。主なヒント:フォームが通常のページに表示されるようにオーバーレイを無効にすると、スクリプトが存在し、実行され、フォーカスが正しく設定されます。

ブラーグ; 少なくとも私は(私が思うに)何が起こっているのかを知っています-それが機能していなくても、私はもっと良い質問をする必要があります。途中で助けてくれたすべての人に感謝します。

于 2011-02-26T17:40:00.363 に答える
0

フォームテーマ関数でdrupal_add_jsを実行できるはずですが、コードを確認する必要があります。

これは私のために働きます:

mymodule_init() {
   if (request_uri() == 'path where your form resides') {
      drupal_add_js(arguments);
   }
}

マルチステップフォームがある場合は、次のように実行できます。

mymodule_init() {
   if (preg_match('/path/', request_uri())) {
      drupal_add_js(arguments);
   }
}

上記のpreg_matchの代わりにdrupal_match_pathを使用することもできますが、このシナリオでそれを機能させることに失敗しました。

http://api.drupal.org/api/drupal/includes--common.inc/function/drupal_add_js/6

于 2011-02-25T16:27:50.087 に答える