If the id of a `.formulaequationinput input` element contains a special
character, then the selector for $preview was silently failing to match
the element, because no escaping was happening.
This fixes the issue by escaping the id before passing to the jQuery
selector function. CSS.escape is the ideal method, but this isn't
present in IE or Edge, so we use a fallback borrowed from the new
jQuery.escapeSelector method.
Student couldn't able to submit his answer in ie9
becuase mathjax was used before its complete loading
thats cuase the problem. Mathjax operations should be
handled synchronously inorder to avoid error.
BLD-1199
The behavior previously tested here was to check that if a JSInput
element was marked as not processed, re-walking the DOM *should* have
reinitialized it. Unfortunately, this behavior is not supported by the
underlying JSChannel library. In fact, if JSChannel detects an existing
channel with the same origin and scope, it throws an uncaught exception,
leaving the DOM in a "broken" state.
JSInput will prevent duplicates from being added, as long as we don't
manually update the `data-processed` attribute. This behavior is already
being tested.
Select DOM elements with wildcard syntax
- DOM lookups were being done with non-existent literal selectors, so it
was returning empty lists. As assertions were to be made while
iterating over the list of elements, nothing was actually being
verified.
- Common code has been centralized in the setup function. By declaring
CSS selectors once, we minimize the odds of inadvertently using the
wrong selector, as happened here.
- Had these tests actually been iterating over a non-empty list, this
would have thrown undefined exceptions. jQuery.each calls its handler
with an index and an item/object as the arguments. However, the object
is a DOM-object, not a jQuery-object. These tests break, as they had
assumed the latter.
This test currently fails, meaning that the existing tests weren't
testing what they claimed.
Assertions are made for each element returned by the CSS selectors.
However, the selectors are assumed to be wildcard matches, but are
actually literal selectors. As there are no matched elements, this
causes the assertions to be (silently) checked zero times, without
failure.
Change the `MathJax.Hub.Queue(initializeRequest)` to a simpler function call
(`initializeRequest.call(this)`). This was failing to give a proper context
to initializeRequest, and `this.value` was turning up as `undefined`.
Also add a fallback if we need to display some code before MathJax finishes
its original typesetting.
I was stubbing out `Queue` in my specs, so the tests had to be changed around
a little.
Named `FormulaEquationInput` (name up for debate)
- Based off ChemEqnIn
- Add FormulaEquationInput in inputtypes.py
- Add a call to a skeleton method for a preview
javascript:
- Queue up some MathJax
- Put some ordering on the AJAX requests: add a parameter when the request was started, when it returns check that it isn't outdated before displaying the preview
- Tests
Note: we moved the `jsinput` tests and DISABLED them, because they were causing the tests to fail.