HTML_QuickFormクラスの$form->addElementでselectを指定し、テンプレートでそのドロップダウンリストが選択されたらJavaScriptの関数を起動させたいのですが、可能でしょうか?

よろしくお願いします。

参考サイトを見る限り不可能そうな・・・?
http://www.okushin.co.jp/information/HTML_QForm/02_addElement/

回答の条件
  • 1人1回まで
  • 登録:2007/04/25 18:24:41
  • 終了:2007/04/26 15:33:30

ベストアンサー

id:kidd-number5 No.1

kidd-number5回答回数117ベストアンサー獲得回数152007/04/26 11:24:09

ポイント100pt

arg5にonfocus/onblurを以下のようにして設定します。

$data = array('','','' ...);←選択するデータ

$others = arrray(

'onfocus' => 'javascript:some_js_function_1()',

);


$form->addElement('select','name', 'label', $data, $others);

これで生成されるHTMLが

<select name="name" onfocus="javascript:some_js_function_1()">

のようになってくれるので、あとは別途Javascriptの関数をどっかに書いておけばOKです。

id:seadwell

すごいですね・・・。

プログラムも極めると何でもできるのですね。

連想配列に'onfocus'を指定するなんて考えもつきませんでした。

先ほど、教えられたとおりに試し動作を確認いたしました^^


この方法はかなり応用が利きますね。

感謝感激です。ありがとうございました。

2007/04/26 15:32:21
  • id:kidd-number5
    CSSのクラスを指定しなきゃいけなかったことがあって、
    それでHTML_QuickFormのソースを眺めていて偶然気がつきました(^-^;

    役に立ってよかったです。

    やっぱりPEARは細かいことやろうとすると中身を見るしか・・・(^-^;
  • id:seadwell
    回答が終わってからの質問で恐縮なのですが、配列のKeyにイベントハンドラを指定すると、なぜ、そのイベントがHTMLで生成されるのか理解できずにいます。
    お恥ずかしいですが・・・。

    arg5("select"の場合)の使い方が、selectedを指定するくらいしか理解できていません。
    摩訶不思議でしょうがありません。
    時間がゆっくりのときで結構ですので、このような発想に至った経緯をを教えていただければありがたいです。
  • id:seadwell
    あっ、コメントされてたんですね^^
    HTML_QuickFormソースを必死こいてみて見ます。

    しかし、この着眼点は殿堂入りの保存版物ですね^^
  • id:kidd-number5
    http://d.hatena.ne.jp/kidd-number5/20070426

    ちょっと突っ込んで書いてみましたが、これでわかりますかね・・・?
  • id:seadwell
    答えを知ってから説明された箇所を見れば、あ~なるほど・・・と思いますが、私はこのソースを見ても、配列を組んでイベントを実行させようとは考えなかったでしょう。
    やはり、スゴイ・・・。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません