<!DOCTYPE html> <html> <head> <title>Dynamic Preview of Textarea with MathJax Content</title> <!– Copyright © 2012-2018 The MathJax Consortium –> <meta http-equiv=“Content-Type” content=“text/html; charset=UTF-8” /> <meta http-equiv=“X-UA-Compatible” content=“IE=edge” />

<script type=“text/x-mathjax-config”>

MathJax.Hub.Config({
  showProcessingMessages: false,
  tex2jax: { inlineMath: [['$','$'],['\\(','\\)']] }
});

</script> <script type=“text/javascript” src=“../MathJax.js?config=TeX-AMS-MML_HTMLorMML”></script>

<script> var Preview = {

delay: 150,        // a short delay before processing after typing

typeset: null,     // the typeset preview area (filled in by Init below)
preview: null,     // the untypeset preview    (filled in by Init below)
buffer: null,      // the new preview to be typeset (filled in by Init below)

oldtext: '',       // used to see if an update is needed
pending: false,    // true when a restart is in the MathJax queue

//
//  Get the preview and buffer DIV's
//
Init: function () {
  this.typeset = document.getElementById("MathPreview");
  this.buffer = document.createElement("div");
  this.review = document.createElement("div");
},

//
//  This gets called when a key is pressed in the textarea.
//
Update: function () {
  var text = document.getElementById("MathInput").value;
  if (text !== this.oldtext) {
    this.oldtext = text;
    if (!this.pending) {
      this.pending = true;
      MathJax.Hub.Queue(["Restart",this]);
    }
  }
},

Restart: function () {
  var text = "<p>"+this.oldtext.replace(/\n\n+/g,"</p><p>")+"</p>";
  this.buffer.innerHTML = this.typeset.innerHTML = text;
  this.pending = false;
  MathJax.Hub.Queue(["Typeset",MathJax.Hub,this.typeset]);
}

};

</script> </head> <body>

Type text in the box below:<br/>

<textarea id=“MathInput” cols=“60” rows=“10” onkeyup=“Preview.Update()” style=“margin-top:5px”> </textarea> <br/><br/> Preview is shown here: <div id=“MathPreview” style=“border:1px solid; padding: 3px; width:50%; margin-top:5px”></div>

<script> Preview.Init(); </script>

</body> </html>