トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     マルチラインのTextFieldで入力時に改行が入らないようにしたい
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
colori
Åê¹ÆNo.30612
投稿日時: 2006-12-8 14:17
半人前
居住地: 東京都
投稿: 39
使用環境:
Professional(SP2) + Professional
マルチラインのTextFieldで入力時に改行が入らないようにしたい
現在、TextFieldを

・テキスト入力
・自動リサイズ
・複数行
・ワードラップあり

で表示させているのですが、ワードラップで自動改行されるのはいいんですが、リターン/エンターキーでの改行が入力されると無視できるようにしたいのです。

調べてみると、TextField.restrictプロパティがありましたので「これだ!」と思い、以下のようにチャレンジしてみましたが、うまくいかず、改行が入ってしまいます。


//KeyクラスのENTERをくっつけてみる
myTextField.restrict = "^" + Key.ENTER;

//Flashの改行コードを入れてみる
myTextField.restrict = "^\n";

//正規表現の改行コードを入れてみる
myTextField.restrict = "^\r\n^\r^\n";

//アスキーコードのキャリッジリターンを入れてみる
myTextField.restrict = "^\u000D";

//アスキーコードのラインフィードを入れてみる
myTextField.restrict = "^\u000A";


どのようにすればうまく改行文字を入力させないようにできるでしょうか?
また、このフィールドは改行コードが入力されると「決定」という動作をスクリプトで組んで運用する予定なので、あまり複雑な処理にならない方法で良い方法を探しております。

何卒お力をお貸しくださいませ。m(_ _ )m

環境:
ken1kun
Åê¹ÆNo.30613
投稿日時: 2006-12-8 14:22
半人前
居住地:
投稿: 52
使用環境:
WinXP,Flash CS3 + おもにv9書出
Re: マルチラインのTextFieldで入力時に改行が入らないようにしたい
テキストフィールド入力中
Key.onKeyDownでキー入力を監視して
EnterKeyが押されたら、テキストフィールド末尾改行を削除するような
処理を加えてみたらどうですか?
colori
Åê¹ÆNo.30627
投稿日時: 2006-12-8 16:49
半人前
居住地: 東京都
投稿: 39
使用環境:
Professional(SP2) + Professional
Re: マルチラインのTextFieldで入力時に改行が入らないようにしたい
ken1kun さん、どうもありがとうございます!

その方法もやってみたのですが、どうも改行がフィールドに設定されるのはonKeyDownイベント後のようです。
それと、改行が入力されるのは末尾の部分とは限らないので、Joey Lott氏の正規表現クラス「RegExp.as」を利用して置き換えることにしました。
以下のようにして希望の機能を実現できました。
ありがとうございました。


import RegExp;

myTextField.onKeyDown = function() {
	if (Key.getCode() == Key.ENTER) {
		_parent.onEnterFrame = stripReturn;
	}
}

function stripReturn() {
	var re = new RegExp("\r\n|\r|\n","g");
	myTextField.text = myTextField.text.replace(re, "");
	delete this.onEnterFrame;
}
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops