- PR -

FCKEditorの入力チェックについて

1
投稿者投稿内容
未記入
常連さん
会議室デビュー日: 2007/07/18
投稿数: 26
投稿日時: 2008-10-21 21:03
こんばんは。

現在、FCKEditorを使用していますが、入力すると同時に(onkeyupにて)、文字数チェックを
させようと考えています。

すでに、文字数チェック用のJS関数は作成していますが、
FCKEditorから呼び出す方法がわかりません。

実際、ReplaceTextareaを使用して、onkeyupを設定したTextAreaを指定していますが、
なぜかonkeyupが効いてくれません。

どなたか解決策をご存じでしょうか?
ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2008-10-23 01:33
FCKEditor ちょっと見てみました。

textarea 使ってないのはご存知ですか?

未記入
常連さん
会議室デビュー日: 2007/07/18
投稿数: 26
投稿日時: 2008-10-23 21:20
> textarea 使ってないのはご存知ですか?

デフォルトの状態ではそうなんですが、最初にも記載していますが、
ReplaceTextareaを使用して、自前のTextAreaを指定しているんです。
ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2008-10-24 00:48
>実際、ReplaceTextareaを使用して、onkeyupを設定したTextAreaを指定していますが、
>なぜかonkeyupが効いてくれません。

どうやって設定してるのか書くべきだと思いますが?
分からないので書いてください。

http://www.saturn.dti.ne.jp/~npaka/ajax/fckeditor/index.html
これか。



[ メッセージ編集済み 編集者: ぴあちゃん 編集日時 2008-10-24 00:50 ]
未記入
常連さん
会議室デビュー日: 2007/07/18
投稿数: 26
投稿日時: 2008-10-24 18:07
> どうやって設定してるのか書くべきだと思いますが?
> 分からないので書いてください。

たぶん、あなたにはわからないと思うので、結構です。
ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2008-10-24 19:59
とりあえず、コードがでかすぎるので、要点だけ。
xEditingArea
ってのがあるから、この中身のIFRAMEがエディタ編集部分。

IFRAME を編集可能にするには、contentEditable=true ってやる必要がある。
やけに行間が開いてしまうのはこれのせい。だから、Textarea は使ってない
って言ってるの。わかったかい?


コード:

<html>
<head>
<script type="text/javascript" src="FCKeditor/fckeditor.js"></script>
<script type="text/javascript">
var oFCKeditor = null;
var $D = function(id) { return document.getElementById(id) };
window.onload = function()
{
oFCKeditor = new FCKeditor( 'MyTextarea' ) ;
oFCKeditor.BasePath = "FCKeditor/" ;
oFCKeditor.ReplaceTextarea() ;
}
function FCKItems() {
var arr = [];
arr.push("<table border=1>");
for (var a in oFCKeditor) {
arr.push("<tr><td>" + a + "</td><td><textarea rows=5 cols=50>" + esc(""+oFCKeditor[a]) + "</TEXTAREA></td></tr>");
}
arr.push("</table>");
$D("debug").innerHTML = arr.join("\n");
function esc(s) {
return s.replace(/&/g,"&").replace(/</g, "<");
}
}
function FCK_TA_ONCHANGE() {
alert(oFCKeditor._GetIFrameHtml());
}
function TA_VIEW() {

$D("DEBUG2").value = $D("MyTextarea___Frame").contentWindow.document.body.innerHTML;

FCKItems();
}


</script>
</head>
<body>
<textarea id="MyTextarea" name="MyTextarea">This is <b>the</b> initial value.</TEXTAREA>
<button onclick="TA_VIEW()">BUTTON1</button>
<button onclick="FCK_TA_ONCHANGE()">CHANGE</button>
<textarea id="DEBUG2" rows=10 cols=60></TEXTAREA>
<div id="debug"></div>
</body>
</html>



これがサンプルコード。
FCK エディタのコアは、_GetIFrameHtml() を叩けば、どの HTML をロード
しているのかわかる。先頭に "_" があるからドキュメントには書いてない?
のかな?

そんなこんなで TEXTAREA は使っていません。

馬鹿呼ばわりする前に質問はちゃんと答えようね。

てか、ソース読め。


追記:
コード:

<html>
<head>
<title>FCKeditor - Sample</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="robots" content="noindex, nofollow">
<script type="text/javascript" src="fckeditor/fckeditor.js"></script>
<script type="text/javascript">
var oFCKeditor = null;

window.onload = function()
{
oFCKeditor = new FCKeditor( 'MyTextarea' ) ;
oFCKeditor.BasePath = "fckeditor/" ;
oFCKeditor.ReplaceTextarea() ;
}
</script>
</head>
<body>
<textarea id="MyTextarea" name="MyTextarea">This is <b>the</b> initial value.</textarea>
<button onclick="whereMyTextarea()">Where MyTextarea</button>
<button onclick="show()">SHOW</button>
<script>
var $D = function(id) { return document.getElementById(id) };
var $W = function(name) { return document.getElementsByTagName(name) };
function show() {
//alert(oFCKeditor._GetIFrameHtml());

var ob = $W("iframe")[0].contentWindow.document.getElementById("xEditingArea");
var html = $W("iframe")[0].contentWindow.document.body.innerHTML;
$D("DEBUG").value = html;
alert(ob.nodeName + "::" + ob.firstChild.contentWindow.document.body.innerHTML);

}
function whereMyTextarea() {
var o = $D("MyTextarea");
alert(o.style.display + "::" + o.clientLeft + "/" + o.clientTop + "::" + o.parentNode.nodeName +
"||" + o.offsetWidth + " @ " + o.offsetHeight);
}
</script>
<textarea rows=20 cols=80 id="DEBUG"></textarea>
</body>
</html>



これ実行すると、

TD::This is <B>the</B> initial value.

って表示されます。

じゃぁ、MyTextarea はどこに行ったんだってことになるんだが、
Where MyTextarea ボタンを押すと結果が分かります。
display=none です。
つまり、UIとして機能していないということになります。




[ メッセージ編集済み 編集者: ぴあちゃん 編集日時 2008-10-24 20:07 ]

[ メッセージ編集済み 編集者: ぴあちゃん 編集日時 2008-10-25 01:35 ]
1

スキルアップ/キャリアアップ(JOB@IT)