最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

How to use javascript to get html special characters in text input - Stack Overflow

programmeradmin5浏览0评论

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('&pi;');" value="&pi;" />
<input type="button" onclick="show()" value="go" />

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('&pi;');" value="&pi;" />
<input type="button" onclick="show()" value="go" />
Share Improve this question asked Jul 17, 2012 at 8:06 klikli 2831 gold badge5 silver badges16 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 3

Depending on what you need the it for you could do one of 3 options:

  1. use the javascript escape and unescape functions:

    var escaped = escape('π') // escaped = "%u03C0" which unescape will turn back into π

  2. If you have jQuery available it's html method might do the trick:

    $('input').val().html()

  3. 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 &pi; 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 "&pi;" then the HTML for it needs to be &amp;pi;.

If you want that and the rendering on the button to be π then you need:

<button type="button" value="&amp;pi;">π</button>

(Keeping in mind the various bugs that old-IE has with the button element)

That will, of course, display &pi; when you copy the value to the text input.

Use this to replace all occurrences of the character:

document.getElementById('input').value.replace(/π/g,"&pi;");
发布评论

评论列表(0)

  1. 暂无评论