- ベストアンサー
特定のtextをhtmlに代入してジャンプする方法
- テキスト「s1・s2・s3」とダイナミックテキスト「s4」を使用して、特定のテキストを「.html」に代入してジャンプさせる方法がわかりません。
- ボタンシンボル「GO」のAS内で、「s4.text」に「s1.text + s2.text + s3.text」を代入し、「getURL」を使用してジャンプさせる方法を教えてください。
- 「s4.text」が「001.html」のような値の場合に、「.html」に代入してジャンプする方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 > s1に入力後、「カーソル」が自動的にs2に移動する・・・ > s3に入力後は「カーソル」がシンボル「GO」へ自動的に移動して、 >「ENTER」キーのタッチでジャンプする、 > といったような設定は可能でしょうか? Flash 的にはできますが, 質問者さまができるかどうかはわかりませんよ。 最初のご質問とはかなりレベルが違います。 いや,変な書き方をしましたが, スクリプトコード自体は簡単です。 TextField クラス の onChanged ハンドラを使って, テキストフィールドの入力値の変化を検出し, そのタイミングで, Selectionクラスの setFocus メソッドあたりを使ってフォーカスを変えてやれば良いと思います。 ただそれだけのことです。 とりあえずそのスクリプトを書いてみます。 スクリプトの前に, ボタンにもインスタンス名を付けて置きます。 この例では 「GO_btn」 というインスタンス名を付けたとしておきます。 そして, 「s1」~「s4」 と 「GO_btn」 が存在するフレームに, 次のように書けば出来上がりです。 ----------------------------------- // テキストフィールド s1 の入力値が変わったとき s1.onChanged = function() { // もし s1 の入力値が空白以外であれば if (s1.text != "") { // s2 にフォーカスをセットする Selection.setFocus(s2); } }; // テキストフィールド s2 の入力値が変わったとき s2.onChanged = function() { // もし s2 の入力値が空白以外であれば if (s2.text != "") { // s3 にフォーカスをセットする Selection.setFocus(s3); } }; // テキストフィールド s3 の入力値が変わったとき s3.onChanged = function() { // もし s3 の入力値が空白以外であれば if (s3.text != "") { // ?? テキストフィールド s4 に s1~3 の入力値を足す ?? s4.text = s1.text+s2.text+s3.text; // GO_btn にフォーカスをセットする Selection.setFocus(GO_btn); } }; ------------------------------------ と,ここまでは簡単です。 というか,ここまでは簡単に思えなければ先へは進めないのです。 ここから先をどうすべきか,色々な場合を想定して考えるのが難しいですし, 私は作成しようとしている者ではないのでどうするべきかわかりません。 ここから先, "場合" がたくさんあるのです。 つまりエラー処理です。 一応,1つだけはエラー処理を入れています。 // もし s1 の入力値が空白以外であれば if (s1.text != "") {…} このようにして, 空白でない "場合" に限って次のテキストフィールドにフォーカスを与えるようにはしています。 なぜこのようなことをしているかというと,「入力訂正」が入った "場合" を想定しているためです。 --- 例えば --- 最初に 「s1」 に "5" を入れてみたけど, 「s2」 まで入力した段階で, 『やっぱり 「s1」 は "3" に訂正しよう』 と思って,「s1」の "5" を消した "場合"。 この if文を入れておかなければ, 「s1」の "5" を消したとたん 「s2」 にフォーカスが移ってしまいます。 これでは入力しにくいですし, また人によっては単にこれだけのことを 『バグ』 と呼んで非難します。 それを防ぐためにこの if文 は入れてあります。 作りたいものによって,当然人間の行動も変わります。 思いもよらないような,たくさんの場合の行動を想定して作らないと, かえってこういう仕組みが邪魔になります。 書かれていらっしゃること自体は, 上に書いたスクリプトでできますから簡単なのですが, このエラー処理を入れて行く作業は他人ではできませんし難しいと思います。 あと肝腎な, 「s1」~「s3」のうちどれかに値が入力されていないものがあった "場合" はどうするのか。 の処理も入れていません。
その他の回答 (1)
- BlurFiltan
- ベストアンサー率91% (1611/1754)
他は変更なしで, getURL("○○.html","_top"); ↓変更↓ getURL(s4.text + ".html","_top"); とすれば良いのではないでしょうか?
補足
大変ありがとうございました。スムースにジャンプしてすっきりしています。 ところで上記設定の場合、s1・s2・s3に数字を入力する際に「カーソル」を各々のボックスに手動で移動させなければなりません。 s1に入力後、「カーソル」が自動的にs2に移動する・・・s3に入力後は「カーソル」がシンボル「GO」へ自動的に移動して、「ENTER」キーのタッチでジャンプする、といったような設定は可能でしょうか? 可能なようでしたら、改めてこの設定方法もご教授頂けますでしょうか?
お礼
大変ご親切にありがとうございました。 私も、先日「5問のうち1問を選択」といった設定を「チェックボタン」で作成してしまい、2問、3問にチェックを入れる利用者に戸惑いを感じて「ラジオボタン」に訂正している最中です。 エラー処理を細かく検討してみます。また、宜しくお願いします。