I want to sent some html special character to text field and then later use javascript to get it back in its original format: like if I sent "&pi", it will shows "π" on the text input, and when I use javascript to get it back, I should get "&pi", but I only can get "π", not "&pi". Please help, my code is like the following:
<script type="text/javascript">
function qpush(a) {
document.getElementById('input').value += a;
}
function show(a) {
alert(document.getElementById('input').value);
}
</script>
<input type="text" id="input" />
<input type="button" onclick="qpush('π');" value="π" />
<input type="button" onclick="show()" value="go" />
Depending on what you need the it for you could do one of 3 options:
use the javascript escape and unescape functions:
var escaped = escape('π') // escaped = "%u03C0" which unescape will turn back into π
If you have jQuery available it's html method might do the trick:
$('input').val().html()
This is a hack but will work: Save a copy of the value the way you want it returned on a 'data-' attribute of the input element, this will validate in html5 and won't break in other doctypes.
document.getElementById('input').setAttribute('data-originalValue', '&pi')
The value
property will give you text, not HTML.
You could try getAttribute('value')
but since π
and π
are identically equivalent in HTML, a browser is entirely free to return π
for that too.
Once the HTML has been converted into a DOM, there is no way to access the original HTML (short of downloading the HTML again with XHR and parsing the raw text of it yourself).
If you want the data to be "π"
then the HTML for it needs to be &pi;
.
If you want that and the rendering on the button to be π
then you need:
<button type="button" value="&pi;">π</button>
(Keeping in mind the various bugs that old-IE has with the button element)
That will, of course, display π
when you copy the value to the text input.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With