PHP Code mit Tasten ausführen

Cinderella1982

Grünschnabel
Guten Abend,

hab mal eine Frage. Und zwar ich habe in PHP Code für Fett und so wie kann ich das jetzt mchen, dass wenn ich z.B. ALT+A drücke dass dann in dem Textfeld das [ b ] kommt wenn ich dann nochmals drücke, dann soll eben das [ / b ] kommen.

Wie könnte ich das denn umsetzten?

Gruß
 
@Matthias:
Der Shortcut ist eigentlich "nur" eine Sache für HTML, erst beim Einfügen kommt JavaScript ins Spiel. Wenn ich es richtig verstanden habe liegt dort aber nicht das Problem.

Das Tastaturkürzel lässt sich mit Access-Keys für Verweise oder auch für Buttons lösen. In der Regel arbeitet der Accesskey in Kombination mit Alt, kann aber browserspezifisch auch eine andere Steuertaste nutzen.
Hier ein Beispiel:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>
<meta http-equiv="Content-Type"
    content="application/xhtml+xml; charset=UTF-8" />
<title>Accesskey-Test</title>
</head>
<body>
<div>
<a href="JavaScript:alert('Hier die Funktion aufrufen [b]');"
    accesskey="b">[b] Alt + B</a>
<button onclick="JavaScript:alert('Hier die Funktion aufrufen [i]');"
    accesskey="i">[i] Alt + i</button>
</div>
</body>
</html>
Gruß hpvw
 
hpvw hat gesagt.:
@Matthias:
Der Shortcut ist eigentlich "nur" eine Sache für HTML, erst beim Einfügen kommt JavaScript ins Spiel. Wenn ich es richtig verstanden habe liegt dort aber nicht das Problem.
Aber nur mit den Bordmitteln von HTML lässt es sich eben nicht lösen – von daher ist es meiner Meinung nach hier schon recht gut aufgehoben. Das Verhalten, dass sich ein öffnender und ein schließender Tag abwechseln, ist ja auch ein Teil der Problemstellung.
 
Guten Abend,

so ich komme da gerade nicht so ganz mit. Ich habe mal diesen PHP Code mit der Funktion für Bett und so:

PHP:
<?
  function format($str){
    $str = preg_replace("%\[ b ](.*?)\[ /b ]%","<b>$1</b>",$str);
    $str = preg_replace("%\[ i ](.*?)\[ /i ]%","<i>$1</i>",$str);
    $str = preg_replace("%\[ u ](.*?)\[ /u ]%","<u>$1</u>",$str);
    return $str;
  }
?>

So dann habe ich hier noch das Textfeld wo ich das dann anwenden will:

HTML:
<form name="form1" method="post" action="test.php">
  <table width="98%"  border="0">
    <tr>
      <td width="14%" height="33" scope="col"><strong>Titel:</strong></td>
    <th width="86%" scope="col"><div align="left">
      <input name="textfield" type="text" size="50">
    </div></th>
    </tr>
    <tr>
      <td height="84"><strong>Text:</strong></td>
    <td><textarea name="textarea" cols="46" rows="10"></textarea></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
    <td><input name="senden" type="submit" id="senden" value="&lt;&lt;&lt; Eintragen &gt;&gt;&gt;"></td>
    </tr>
  </table>
</form>

So wie muss ich das jetzt mache, wenn ich z.B. wie oben schon erwähnt ALT+A drücke, dass ich dann eben das [b] bekommen und wenn ich das dann nochmals drücke, dass ich dann das [/b] bekomme?

Gruß
 
Um es nochmals zu erwähnen: Das hat überhaupt rein gar nichts mit PHP zu tun. Null, nada, niente. Du musst dir ein JavaScript programmieren, dass diesen Job übernimmt. (Einfacher wäre es wohl, Google anzuwerfen und danach zu suchen – gibt es schon tausendfach.)
 
HTML:
<script type="text/javascript"><!--
  function bbShortcut(strTag,selfObj) {
  	obj = document.getElementById('textarea');
  	obj.value += '['+ strTag +']';
 	selfObj.onfocus = new Function('fx','bbShortcut("'+ (strTag.match(/^\//) ? strTag.substring(1,strTag.length) : '/'+ strTag ) +'",this)');
  	obj.focus();
  }
  //--></script>
  
  </head><body>
  
  <a href="#" onfocus="bbShortcut('b',this)" accesskey="b"></a>
  <a href="#" onfocus="bbShortcut('i',this)" accesskey="i"></a>
  <a href="#" onfocus="bbShortcut('u',this)" accesskey="u"></a>
  
 <textarea id="textarea" cols="46" rows="10"></textarea>
Getestet mit Mozilla 1.7 und IE 6.0. In Opera macht es sowieso keinen Sinn, weil die Shortcuts dort mit Shift+Esc funktionieren, was so gut wie niemand weiß. In anderen Browsern sollte eigentlich nichts passieren.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück