Не работает в IE 8. parseFloat
Вот такой код.
Проблема возникает в IE 8. Подскажите пожалуйста, как можно исправить?
<form onsubmit="return false;"
oninput="document.getElementById('rez').innerHTML
= parseFloat(document.getElementById('a').value) *
parseFloat(document.getElementById('b').value) * 2;
">
<p>А: <input id="a" type="number"></p>
<p>Б: <input id="b" type="number"></p>
<p>Рез: <output id="rez"></output></p>
</form>
|
Цитата:
Ещё повоюем =))) |
Rise, неа.
1. В IE8 нет события input (есть близкое propertychange, но оно не всплывает. Можно тупо юзать change или keyup) 2. Элемент <output> имеет текстовое содержимое (textContent). Его можно изменять. Причем value - это практически его псеводним. (https://html.spec.whatwg.org/multipa...output-element) Rise, так что можно делать output.innerHTML или appendChild(textNode) - и это кроссбраузерно. |
Хм. Я раньше считал что html5shim в IE нужен только для того, чтобы стили применились к новым тегам. Оказывается проблема не только в стилях, но и в парсинге - без shim'а элементы парсятся как пустые (то есть как <input>). Соответственно, innerHTML к ним не применим.
Но это очень просто исправить. Этот код будет работать в IE8:
<!DOCTYPE html>
<script>
document.createElement('output');
</script>
<body>
<form onsubmit="return false;"
onkeyup="document.getElementById('rez').innerHTML
= parseFloat(document.getElementById('a').value) *
parseFloat(document.getElementById('b').value) * 2;
">
<p>А: <input id="a" type="number"></p>
<p>Б: <input id="b" type="number"></p>
<p>Рез: <output id="rez"></output></p>
</form>
Либо подключить html5shim. |
| Часовой пояс GMT +3, время: 05:12. |