Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите с output и знаком препинания в input (https://javascript.ru/forum/misc/58872-pomogite-s-output-i-znakom-prepinaniya-v-input.html)

Virusx2000 14.10.2015 22:23

Помогите с output и знаком препинания в input
 
Вот форма, рабочая. Может быть слишком накрутил с решением, но я не профессионал и это мой первый код.
Проблема в следующем:
- в output выдается не целое число, не могу его никак округлить;
- в <input id="d" value="" placeholder="десятичные через точку"> если десятичные цифры писать через запятую выдается в итоге ошибка.
Помогите, кто чем может.

<form onsubmit="return false;
"oninput="document.getElementById('rezultat').innerHTML 
= parseFloat(document.getElementById('a').value)/10*parseFloat(document.getElementById('c').value) 
+parseFloat(document.getElementById('a').value)*parseFloat(document.getElementById('c').value) 
+parseFloat(document.getElementById('b').value)*parseFloat(document.getElementById('c').value) 
+parseFloat(document.getElementById('d').value)*280 
+parseFloat(document.getElementById('d').value)*70 
+parseFloat(document.getElementById('a').value)/10*parseFloat(document.getElementById('c').value)/100
+parseFloat(document.getElementById('a').value)*parseFloat(document.getElementById('c').value)/100
+parseFloat(document.getElementById('b').value)*parseFloat(document.getElementById('c').value)/100
+parseFloat(document.getElementById('d').value)*280/100
+parseFloat(document.getElementById('d').value)*70/100
">

<table width="100%" border="0" cellspacing="0" cellpadding="2">
<tr><td>Цена в юанях</td><td><input id="a" type="number"></td></tr>
<tr><td>Доставка по Китаю</td><td><input id="b" value="0"></td></tr>
<tr><td>Курс юаня</td><td><input id="c" value="11"></td></tr>
<tr><td>Вес груза, в кг</td><td><input id="d" value="" placeholder="десятичные через точку"></td></tr>
<tr><td> <br> <i> <p align="center"> Стоимость с учетом комиссии и доставкой до Москвы </p> </i> <td> <br> <b> <font color="#31B404"> <output id="rezultat" ></output> р. </b> </td><td></td></tr> <!--вывод результата-->
</table>
</form> </br>

Lemme 14.10.2015 22:28

https://learn.javascript.ru/number#%...BD%D0%B8%D0%B5

Virusx2000 14.10.2015 22:42

Подскажите неумехе, как его правильно вставить в код?

Lemme 14.10.2015 22:53

Оберните в Math.round или Math.floor результат.
Т.е
document.getElementById('rezultat').innerHTML = Math.round(...); // точки замените на parseFloat(document.getElementById('a').value) и.т.д


Насчет запятой
<input type="text" oninput="this.value = this.value.replace(/,/, '.');">

Lemme 14.10.2015 23:27

<form onsubmit="return false;">
 
<table width="100%" border="0" cellspacing="0" cellpadding="2">
<tr><td>Цена в юанях</td><td><input id="a" type="number"></td></tr>
<tr><td>Доставка по Китаю</td><td><input id="b" value="0"></td></tr>
<tr><td>Курс юаня</td><td><input id="c" value="11"></td></tr>
<tr><td>Вес груза, в кг</td><td><input id="d" value="" placeholder="десятичные через точку"></td></tr>
<tr><td> <br> <i> <p align="center"> Стоимость с учетом комиссии и доставкой до Москвы </p> </i> <td> <br> <b> <font color="#31B404"> <output id="rezultat" ></output> р. </b> </td><td></td></tr> <!--вывод результата-->
</table>
</form> </br>

<script>
    document.querySelector('form').oninput = function() {
        var rezultat	= document.getElementById('rezultat'),
            a			= document.getElementById('a'),
            b			= document.getElementById('b'),
            c			= document.getElementById('c'),
            d			= document.getElementById('d');

        a.value = a.value.replace(/,/, '.');
        b.value = b.value.replace(/,/, '.');
        c.value = c.value.replace(/,/, '.');
        d.value = d.value.replace(/,/, '.');

        a = parseFloat(a.value) || 0;
        b = parseFloat(b.value) || 0;
        c = parseFloat(c.value) || 0;
        d = parseFloat(d.value) || 0;

        rezultat.innerHTML = Math.round(a / 10 * c + a * c + b * c + d * 280 + d * 70 + a / 10 * c / 100 + a * c / 100 + b * c / 100 +d * 280 / 100 + d * 70 / 100);
    }
</script>

Virusx2000 15.10.2015 09:27

Огромное спасибо!
Я даже и не думал что можно решить таким образом. Теперь буду изучать на этом примере новые функции, о которых даже не подозревал.
Еще раз, СПАСИБО!

Virusx2000 19.10.2015 16:02

По мере успешного внедрения скрипта разрастается и жадность, и запросы.

Как в этот скрипт вставить вторую формулу

(a / 10 * c + a * c + b * c + d * 280 + a / 10 * c / 100 + a * c / 100 + b * c / 100 +d * 280 / 100)

Чтобы <output id="rezultat" ></output> р. отображался отдельно?

Допускал ошибки, пытаясь переделать скрипт по-разному - теряет работоспособность, видимо, упускаю какую-то команду(((

Virusx2000 26.10.2015 11:44

Кто-нибудь подскажет?


Часовой пояс GMT +3, время: 02:27.