onclick IE Problem?

crashx

Erfahrenes Mitglied
Hallo zusammen.

Um via Button einen Link in eine Textarea einzutragen, habe ich mir eine Lösung ergoogelt und wurde auch mit einer Javascript variante bedient.

Soweit so gut, es gibt keinerlei Probleme.
Das ganze habe ich mir dan noch mit einem Select->Option onklick umgesetzt und dachte das geht ja auch. im FF 2 geht das ganze auch nur im IE 7,6,5.5 geht es mit der Select->Option variante nicht.

Funktioniert mit allen gänglichen Browsern
PHP:
echo '<img onclick="insert(\'[A HREF=+http://webadresse+X]Titel\', \'[/A]\');" src="images/sty_link.jpg" style="cursor:pointer">&nbsp;';

Geht im IE nicht
PHP:
echo '<select name="link" style="vertical-align: top;">';
              $sql = "SELECT * FROM `navigation`
			          GROUP BY `titel` ASC
					 ";
			  $result = mysql_query($sql);
			  while($row = mysql_fetch_array($result)){
			    echo '<option value="" onclick="insert(\'[A HREF=+'.$row['url'].'?sub='.$row['titel'].'+]\', \'[/A]\');">'.$row['titel'].'</option>';
              }
              $sql = "SELECT * FROM `navigation_sub`
			          GROUP BY `titel` ASC
					 ";
			  $result = mysql_query($sql);
			  while($row = mysql_fetch_array($result)){
			    echo '<option value="" onclick="insert(\'[A HREF=+'.$row['url'].'?sub='.$row['sub'].'+]\', \'[/A]\');">'.$row['titel'].'</option>';
              } 
            echo '</select>';

Hier noch die Funktion insrt
Code:
function insert(aTag, eTag) {
  var input = document.forms['formular'].elements['text'];
  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);
  }
}

Vielleicht hat mir da jemand einen lösungsansatz.
 
Hi,

verwende anstelle von onclick den onchange-Event, und ruf diesen stattdessen im select-Element auf.

mfg Maik
 
Ok ich habe das mal ein wenig ausgetesstet.

PHP:
echo '<select onchange="insert(value)" name="link" style="vertical-align: top;">';
              echo '<option>bitte wählen</option>';
			  $sql = "SELECT * FROM `navigation`
			          GROUP BY `titel` ASC
					 ";
			  $result = mysql_query($sql);
			  while($row = mysql_fetch_array($result)){
			    echo '<option value="[A HREF=+'.$row['url'].'?sub='.$row['titel'].'+][/A]">'.$row['titel'].'</option>';
              }
            echo '</select>';
Das geht nicht ganz irgendwie.

Code:
[A HREF=+badeplausch_kursorte.php?sub=Badeplausch+]Badeplausch Kursorte[/A]undefined

Das undefined am ende bekomme ich nicht ganz weg. Vielleicht eine kleine Hilfestellung?

vielen Dank schon mal.
 

Neue Beiträge

Zurück