In Formular einsetzen an Cursorposition
Ralph
- javascript
Hallo,
ist es moeglich, per JavaScript etwas in Formulare einzusetzen und zwar an der aktuellen Cursorposition?
Bisher bekomme ich es nur so hin, dass es am Ende auftaucht.
Waere Euch dankbar fuer einen Link oder ein Code-Snipplet. Oder geht das garnicht?
Ralph
Hallo, Ralph,
ist es moeglich, per JavaScript etwas in Formulare einzusetzen und zwar an der aktuellen Cursorposition?
Diese aufwändige Lösung wurde mal irgendwo gepostet ...
Grüße, Sebastian
--------------- schnipp ---------------
<!--
Here's some html editing code that works with IE.
It won't work on netscape and doesn't work on mac...
But if you have a limited environment.
-->
<script language=javascript>
<!--
function markSelection(txtObj)
{
if(txtObj.createTextRange) {
txtObj.caretPos = document.selection.createRange().duplicate();
isSelected = true;
}
}
function insertTag(txtName,tag,enclose)
{
var closeTag = tag;
if(enclose) {
var attribSplit = tag.indexOf(' ');
if(tag.indexOf(' ') > -1)
closeTag = tag.substring(0, attribSplit);
}
if(isSelected){
var txtObj = eval("document.forms[0]." + txtName);
if(txtObj.createTextRange && txtObj.caretPos) {
var caretPos = txtObj.caretPos;
caretPos.text =((enclose) ? "<"+tag+">"+caretPos.text+"</"+closeTag+">" : "<"+tag+">"+caretPos.text);
markSelection(txtObj);
if(txtObj.caretPos.text=='') {
isSelected=false;
txtObj.focus();
}
}
} else {
// placeholder for loss of focus handler
}
}
//-->
</script>
<form>
<textarea name="tsttxt" ONSELECT="markSelection(this);" ONCLICK="markSelection(this);" ONKEYUP="markSelection(this);"></textarea>
<input type="button" value="BOLD" onClick="insertTag('tsttxt', 'b', true)">
<input type="button" value="PARAGRAPH" onClick="insertTag('tsttxt', 'p', false)">
</form>
--------------- schnipp ---------------
Hallo,
meint Ihr, diese Abwandlung des letzten Postings ist so in Ordnung?
Bei nicht-IE-Browsern wird das Zeug einfach hinten dran gehaengt, dann hat der User wenigstens die Tags.
Beim IE wird's entweder an der aktuellen Cursor-Position eingefuegt oder der markierierte Text mit Tags versehen ==> Problem: will ich selektierten Text 2-mal hintereinander bearbeiten, funzt das nicht.
Irgendeine Idee?
Ralph
==========================
<script language=javascript>
<!--
var clientPC = navigator.userAgent.toLowerCase(); // Get client info
var is_ie = ((clientPC.indexOf("msie") != -1) && (clientPC.indexOf("opera") == -1));
function markSelection(txtObj)
{
if(txtObj.createTextRange)
{
txtObj.caretPos = document.selection.createRange().duplicate();
}
}
function insertTag(txtName,tag,enclose)
{
var closeTag = tag;
if(enclose)
{
var attribSplit = tag.indexOf(' ');
if(tag.indexOf(' ') > -1)
{
closeTag = tag.substring(0, attribSplit);
}
}
var txtObj = eval("document.forms[0]." + txtName);
if (is_ie)
{
if(txtObj.createTextRange && txtObj.caretPos)
{
var caretPos = txtObj.caretPos;
if (caretPos.text == '')
{
content = 'YOUR TEXT';
}
else
{
content = caretPos.text;
}
if (enclose)
{
caretPos.text = "<" + tag + ">" + content + "</" + closeTag + ">";
}
else
{
caretPos.text = "<" + tag + ">" + content;
}
}
}
else
{
if (enclose)
{
txtObj.value += ('<' + tag + '>YOUR TEXT<' + closeTag + '>');
}
else
{
txtObj.value += ('<' + tag + '>YOUR TEXT');
}
}
}
//-->
</script>