• ベストアンサー

テキストフォームのテキストをクリックで消す方法

メールアドレスを入力させるテキストフォームに「メールアドレスを入力してください」と表示させておき、クリックするとそのテキストが消え入力できる状態にする方法を探しています。 javascriptでの方法はあったのですが、Flashでのactionscriptではどのように記述したらよいのでしょうか? よろしくお願いいたします。

  • Flash
  • 回答数1
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.1

Flash では、選択することができる対象(ボタンやボタン機能を使用しているムービークリップ、文字を選択できるテキストフィールドなど)をクリックした時、その対象には”フォーカス”と呼ばれるものが当たります。 テキストフィールドでは、種類を”テキスト入力”にするか、もしくは”静止テキスト”または”ダイナミックテキスト”で文字を選択可能に設定すると、フォーカスが当たる対象に含まれます。 選択・操作する対象として同時に選ばれるものはムービーの中に1つしかないため、フォーカスが当たっている対象も常に1つしかありません。 つまり、選択できる対象が複数ある場合、他の対象が選択された時には、前にフォーカスが当たっていたものはフォーカスを失うことになります。 テキストフィールドを制御する TextField クラス( Flash MX ではオブジェクト)には、フォーカスが当たった時に指定の関数を自動的に呼び出してくれる” onSetFocus ”と、他の対象にフォーカスが移ったために自分がフォーカスを失う時に関数を呼び出す” onKillFocus ”というイベントハンドラがあります。 この2つを利用してはいかがでしょう。 ----------------------------------------------------------- 作り方の一例です。 ステージにテキストフィールドを作り、種類を”テキスト入力”に設定してください。 それから、種類を選ぶリスト(「プロパティ」パネルの左上)のすぐ下にインスタンス名を入力する項目がありますので、何か名前を入力してください。 ここでは仮に” mail_input ”と付けたとします。 以上で準備は完了です。 次はスクリプトを書きます。 ******************************** Flash Player 6 以降、ActionScript 1.0 のスクリプトの例です。 Flash CS3 をお使いの場合は、ActionScript のバージョンを 1.0 か 2.0 に設定してください。 このスクリプトは、テキストフィールドがあるタイムラインのフレームに記述してください。 (↓各行頭に全角のスペースが入っています。コピーする際は、全て半角のスペースかタブに置き換えてください。このまま使うとシンタックスエラーになります) /************************************************************/  //テキストフィールドのセットアップ  //テキスト入力・単一行・自動伸縮なし・境界枠あり・HTMLを無効  mail_input.type = "input";  mail_input.multiline = false;  mail_input.autoSize = "none";  mail_input.border = true;  mail_input.html = false;  //デフォルトの文字列を入れておく  sample_str = "メールアドレスを入力してください";  mail_input.text = sample_str;  //テキストフィールドにフォーカスが当たった時の処理  mail_input.onSetFocus = function()  {   //入力されている文字列がデフォルトの場合は、文字列を削除する   if( mail_input.text == sample_str )   {    mail_input.text = "";   }  };  //テキストフィールドからフォーカスが外れた時の処理  mail_input.onKillFocus = function()  {   //何も入力されていなければ、デフォルトの文字列を表示する   //何か入力されている時は何もしない   if( mail_input.text == "" )   {    mail_input.text = sample_str;   }  }; /************************************************************/ ”テキストフィールドのセットアップ”の部分は、「プロパティ」パネルで設定している場合は不要です。 テキストフィールドが1つだけで他にボタンなどもないと、このテキストフィールドは常にフォーカスを失うことがないので onKillFocus は意味がありません。”テキスト入力”のテキストフィールドやボタン等を追加して、動作を確認してみてください。 インスタンス名” mail_input ”のテキストフィールドに、最初は「メールアドレスを入力してください」と表示されます。 クリックするとこの文字が消え、何かを入力できるようになります。 他のテキストフィールドなどをクリックするか Tab キーで選択すると、mail_input はフォーカスを失います。 この時、何も入力されていない状態だった場合に限り、デフォルトの「メールアドレスを・・・」の文字列を表示します。 ******************************** TextField クラスには、テキストフィールド内に表示する内容を管理している” text ”というプロパティがあり、書き換えるとテキストフィールドの内容をスクリプトで変更することができます。 text プロパティと onSetFocus を合わせて、”フォーカスを得た時に text プロパティに空っぽの文字列( "" )を入れて内容をクリアする”ことが、今回の基本的な考え方です。 しかし、フォーカスを得た時に無条件で text プロパティをクリアすると、メールアドレスが入力されていてもクリアされることになり、せっかく入力した情報が消えてしまいます。 そこで、クリアする時に条件を付けて、フォーカスを得た時にデフォルトの「メールアドレスを・・・」の文字列が表示されている場合だけクリアして入力できるようにします。 何かが入力されている場合は、次にフォーカスを得て onSetFocus によりこの関数が呼び出されても、if 文の条件が不成立になるので内容がクリアされません。 フォーカスに関しては、フォーカスを失った時にも何かを実行することができます。 テキストフィールドでは、” onKillFocus ”というイベントハンドラで定義します。 メールアドレスを入力しようとしてその項目をクリックしても、何も入力しないまま他の項目を選んだり、手違いで入力できていないのに気付かず先に進んでしまった・・・など、「入力したつもりだったけれど、実は入力されなかった」という状況はいろいろと想定できると思います。 onKillFocus イベントハンドラを利用すると、このような場合にデフォルトの文字列に戻すことができます。 テキストフィールドを空っぽにしたままで構わないのでしたら、mail_input.onKillFocus = function ・・・の部分を削除してください。 ----------------------------------------------------------- 今回は触れませんが。 テキストフィールドに入力できる文字の種類を制限する” restrict ”プロパティで半角文字だけを受け付けるようにしたり、Flash 8 以降であれば IME クラス( System.IME クラス)と onSetFocus を合わせて、フォーカスを得た時に自動的に半角英数モードに切り替えるといったことも可能です。 ユーザーは何を入力するか分からないので、入力されると困るものは予め可能な限り排除しておき、最後に入力されたものにチェックを入れて問題があれば入力し直してもらう設計にすると万全です。 IME クラスの使用例は Flash のテクニカルノートで紹介されています。 よろしければ、ご参考になさってください。  ・ Adobe サポートデータベース [228676]   IME クラスを使用して OS の IME を制御する   http://support.adobe.co.jp/faq/faq/qadoc.sv?228676+002

yuna1224
質問者

お礼

DPEさま 大変丁寧で細かな説明をしていただきありがとうございます! 無事に作成することができました。 とても勉強になりました。 ありがとうございました!!

関連するQ&A

  • 入力フォームのテキストボックスに・・・

    FireFox 1.5.0.4 を使っています。 あるサイトのフォームを開いて、例えばメールアドレスのテキストボックスをクリックすると入力履歴が表示されます。 これって、このフォームから一度は送った事がある という事なのか、それとも他のサイトで入力した記録が表示されているだけなんでしょうか?

  • テキスト入力フォームをクリックしなくてもアクティブに

    テキスト入力フォームをクリックしなくてもアクティブにするjavascriptを教えてください。 下のスクリプトの間違っている箇所がわかりません。 フォームタグの閉じる位置でしょうか。 <form name=frm> <input TYPE=TEXT SIZE=20> <input TYPE=Button VALUE="検索" onClick='alert("仮")'> </form> <script language=javascript> //<!-- document.frm.passch.focus(); //--> </script>

  • Flash内のテキストを外部から書き換えるには

    サイトの管理者以外(知識の無い人)でも Flash内のテキストを外部から 書き換えられるようにしたいのです。 例えば、 テキストを表示するSWF以外に、 別ページのテキスト更新用フォームを設けて そこから入力・送信する事で指定部分のテキストが書き換えられる、 というようなものを作りたいんですが どのような方法を使えばよいのでしょうか? 当然ActionScriptのみでは解決出来ないと思うのですが 他の言語との連携はしたことが無く、疎いもので・・ 詳しい方宜しくお願いします。

    • ベストアンサー
    • Flash
  • フォームのテキストをリンク化するjavascript

    ブログ等で利用されている、フォームのテキストにリンクをつけるjavascriptを教えてください。 (詳細) フォームのテキストを選択し、ボタンを押すとURLを入力するwindowが開くjavascript よろしくお願いします。

  • 入力フォームに文字を入れると消える文字

    よく名前やメールアドレスを入力するフォームがありますよね。 あれでクリックすると最初に表示されてる文字(「お名前」や「メールアドレスなど」)が消えるjavascriptのサンプルはたくさん見かけるのですが、 一文字目を入力した時に消えるサンプルってどこかにありませんか? かっこいいのでサイトに実装したいのですが。

  • VBA あるフォームのあるテキストボックスへ飛びたい

    教えてください エクセルのVBAで簡単な1問1答形式のプログラムを作っています フォームにある「次の問」を押したときに そのフォーム上に解答用のテキストボックスに 自動的に行く方法を教えてください 今は、「次の問」を押して マウスでそのテキストボックスをさらにクリックして 解答を入力するという状態です 上記の「マウスでテキストボックスをさらにクリックして」 という部分をなくしたいのです どうぞよろしくお願いします

  • ホームページでFlash読み込み後、フォームのテキストボックスにメッセージを表示させたいです。

    大きなFlashファイルを読み込みが済んだ時点でJavascriptからそれがわかるイベントってあるのですか? ホームページでFlash読み込み後、フォームのテキストボックスにメッセージを表示させたいです。

    • ベストアンサー
    • Flash
  • ヤフーID登録フォームのようにテキストフィールドクリックでメッセージ表示させたい

    https://edit.yahoo.co.jp/config/eval_register?.src=event&.done=http://yidpromo.yahoo.co.jp/ ↑ ヤフーIDの登録フォームでは テキストフィールドをクリックすると その下に項目ごとにメッセージ(ヘルプ)が表示されます。 別のテキストフィールドをクリックしたり、 他の場所をクリックすると、メッセージは非表示になります。 メッセージが出てくるとき、 パッと出るのではなく、アニメーションのように表示されます。 これと全く同じことをしたいのですが、 JavaScriptなどを利用しているのでしょうか? 実現方法をご存知の方、教えていただけますと幸いです。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • HTML
  • テキストをクリックして新たにテキストを表示させる方法

     ある大カテゴリのテキスト「×××」をクリックすると、その下に「☆☆☆」とか「●●●」などといった小カテゴリのメニューが表示されたり、また「×××」を表示するとその隣に内容が表示されたりする(ネタばれ禁止のため)というテクニックがウェブサイトで使われていますが、これはなんていうJavascriptの機能を使っているのでしょうか。

  • フォームを利用したテキストの代入

    お世話になっております。 こんな事ができるのかわかりませんが、ご相談させて下さい。 今伝票入力のシステムを作成しているのですが、 あるフォームAにテキストB(取引先コードとします)があります。テキストBをダブルクリックするとフォームC(取引先コード検索)が開きます。 フォームC上にテキストD(取引先名)があり、取引先名の一部を入力し、入力した名称に対応する取引先コードが(リストボックス等)表示され、 表示されたリストボックスの該当部分を選択するとフォームAのテキストBに反映するみたいな事ができればと思っています。 別途。検索画面を作成して、そこでコードを調べて、そのコードをフォームAに戻り入力するという手もありますが、 相談させていただいている方法のほうが便利なような気がするので、なんとかならないかなと思っているところです。 実現不可能であれば、別途考えますが、もしご存知であれば教えていただければと思っております。

専門家に質問してみよう