::
Home > カーソルが思い通りにならない。

xoopsで、weblogD3を利用することにしたのですが、これ、何故かフォームへのコードの追加が
カーソル位置ではなく、文末になってしまっており、非常に使いづらく感じておりました。
で、色々と調べ、さんだーさんにも知恵を借りつつ頑張ったところ、javascriptとfirefoxの関係の問題のようで。

xoops.jsとxoopscodes.phpを修正することで、きちんとカーソル位置にBBcodeや顔文字を入れることができるようになりました♪

【xoops.js】
} else {
domobj.value = domobj.value + text;
}

} else if (domobj.selectionStart){
tmpValue = new Array();
posSt = domobj.selectionStart;
posEd = domobj.selectionEnd;
tmpValue[0] = domobj.value.substring(0, posSt);
tmpValue[1] = domobj.value.substring(posEd,domobj.value.length);
domobj.value = tmpValue[0] + text + tmpValue[1];
} else {
domobj.value = domobj.value + text;
}に修正。

var revisedMessage;
var textareaDom = xoopsGetElementById(id);
xoopsInsertText(textareaDom, smilieCode);
textareaDom.focus();
return;

var revisedMessage, pos;
var textareaDom = xoopsGetElementById(id);
if(textareaDom.selectionEnd)
pos = eval(textareaDom.selectionEnd + smilieCode.length);
xoopsInsertText(textareaDom, smilieCode);
textareaDom.focus();
if(pos){
textareaDom.selectionStart = pos;
textareaDom.selectionEnd = pos;
}
return;に。

【xoopscodes.php】
<textarea id='".$textarea_id."' name='".$textarea_id."' cols='$cols' rows='$rows'>".$GLOBALS[$textarea_id]."</textarea>

<textarea id='".$textarea_id."' name='".$textarea_id."' onselect=\"xoopsSavePosition('".$textarea_id."');\" onclick=\"xoopsSavePosition('".$textarea_id."');\" onkeyup=\"xoopsSavePosition('".$textarea_id."');\" cols='$cols' rows='$rows'>".$GLOBALS[$textarea_id]."</textarea>

とりあえずこれで、私のとこでは希望通りの動きになっております。


Comments

No comments yet

Add Comment


open

プレビュー

TrackBack URL:

http://nangoku.sarara.org/open/trackback/item_700.html