Heinz: So gehts nicht

Beitrag lesen

Ich habe jetzt versucht, über den onfocus() Eventhandler eine Variable zu setzen. Diese Variable soll den Elementnamen beinhalten, aus dem der onfocus Eventhandler ausgelöst wird.

Dann will ich den onclick-Eventhandler damit füttern.

Aber ich erhalte einen JS-Fehler:

Fehler: input is undefined
Quelldatei: file:///C:/test/html2.html
Zeile: 16

Aber so weit weg glaube ich von der Lösung gar nicht zu sein, oder?

Heinz

  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"  
        "http://www.w3.org/TR/html4/strict.dtd">  
<html>  
<head>  
  <script type="text/javascript">  
  
function var_setz(ename) {  
var elementname = ename;  
return elementname;  
}  
  
  
function insert(aTag, eTag, formularname, elementname) {  
  var input = document.forms[formularname].elements[elementname];  
  input.focus();  
  /* für Internet Explorer */  
  if(typeof document.selection != 'undefined') {  
    /* Einfügen des Formatierungscodes */  
    var range = document.selection.createRange();  
    var insText = range.text;  
    range.text = aTag + insText + eTag;  
    /* Anpassen der Cursorposition */  
    range = document.selection.createRange();  
    if (insText.length == 0) {  
      range.move('character', -eTag.length);  
    } else {  
      range.moveStart('character', aTag.length + insText.length + eTag.length);  
    }  
    range.select();  
  }  
  /* für neuere auf Gecko basierende Browser */  
  else if(typeof input.selectionStart != 'undefined')  
  {  
    /* Einfügen des Formatierungscodes */  
    var start = input.selectionStart;  
    var end = input.selectionEnd;  
    var insText = input.value.substring(start, end);  
    input.value = input.value.substr(0, start) + aTag + insText + eTag + input.value.substr(end);  
    /* Anpassen der Cursorposition */  
    var pos;  
    if (insText.length == 0) {  
      pos = start + aTag.length;  
    } else {  
      pos = start + aTag.length + insText.length + eTag.length;  
    }  
    input.selectionStart = pos;  
    input.selectionEnd = pos;  
  }  
  /* für die übrigen Browser */  
  else  
  {  
    /* Abfrage der Einfügeposition */  
    var pos;  
    var re = new RegExp('^[0-9]{0,3}$');  
    while(!re.test(pos)) {  
      pos = prompt("Einfügen an Position (0.." + input.value.length + "):", "0");  
    }  
    if(pos > input.value.length) {  
      pos = input.value.length;  
    }  
    /* Einfügen des Formatierungscodes */  
    var insText = prompt("Bitte geben Sie den zu formatierenden Text ein:");  
    input.value = input.value.substr(0, pos) + aTag + insText + eTag + input.value.substr(pos);  
  }  
}  
  
  
  </script>  
</head>  
<body>  
  <h1>Demo: Einf&uuml;gen von Inhalten in eine Textarea</h1>  
  <p>Positionieren Sie einfach den Cursor innerhalb der textarea oder markieren Sie Text darin.  
     W&auml;hlen Sie dann "Einf&uuml;gen", um <code>[link]...[/link]</code> an dieser Stelle  
     einf&uuml;gen zu lassen, sofern es der Browser erm&ouml;glicht.</p>  
  <form name="formular" action="">  
    <p><textarea cols="30" rows="10" name="eingabe" onfocus="var_setz('eingabe')">Ihre Nachricht</textarea></p>  
    <p><input type="button" value="Einfügen" onClick="insert('[link]', '[/link]', 'formular', 'elementname')"></p>  
  </form>  
</body>  
</html>