Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2017, 17:58   #1
spoon100500
Форумчанин
 
Аватар для spoon100500
 
Регистрация: 14.10.2016
Сообщений: 406
По умолчанию Ошибка расчета по min и max значениям

Инпутам ширина и высота прописаны min и max, если ввести большее число чем min и max с клавиатуры, то происходит расчет введенного числа, хотя ограничение по min и max работает т.е. если ширина min=25, а ввел 20, то расчет будет исходя из введенного значения (20).
Код HTML:
<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="utf-8">
</head>
<body>

<span style="color:#0000FF;font-family:'Times New Roman';font-size:20px;"><strong><em>Ширина, м</em></strong>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<strong><em>Высота, м</em></strong></span></div>
<br>
<input type="number" id="editbox1" onblur="up1(this)" step="0.01">
<input type="number" id="editbox2" onblur="up2(this)" step="0.01">
 <br>

 
<div class="minMaxHeight" style="position:absolute; left:100px;"><!--max высота-->
  <i><strong>Max.</strong><span id="maxHeight"> 0</span>см</i>
</div>
 
<div class="minMaxWidth"><!--minmax ширина-->
  <i><strong>Min.</strong><span id="minWidth"> 0</span>см</i><!--min ширина-->
  <br>
  <i><strong>Max.</strong><span id="maxWidth"> 0</span>см</i><!--max ширина-->
</div>

<select size="1" id="combobox"><!--Системы-->
  <option value="1">A</option>
  <option value="2">B</option>
  <option value="3">C</option>
</select>
 
<select size="1" id="combobox1"><!--Системы-->
  <option value="4">D</option>
  <option value="5">F</option>
  <option value="6">G</option>
</select>

<span id="rezult" style="color:#00FF00;font-family:'Times New Roman';font-size:24px;"><strong><em>Результат</em></strong></span></div>
 
<script>
var values = {
  "1": {wMin: 25, wMax: 30, hMax: 40},
  "2": {wMin: 50, wMax: 60, hMax: 70},
  "3": {wMin: 80, wMax: 90, hMax: 100},
  "4": {wMin: 110, wMax: 120, hMax: 130},
  "5": {wMin: 140, wMax: 150, hMax: 160},
  "6": {wMin: 170, wMax: 180, hMax: 190}
}
 
var wMin, wMax, hMax;
var ed1_width, ed2_height;
var finish;
var calc = 0;
 
wMin = document.getElementById('minWidth'); //min ширина
wMax = document.getElementById('maxWidth'); //max ширина
hMax = document.getElementById('maxHeight'); //max высота

ed1_width = document.getElementById('editbox1');
ed2_height = document.getElementById('editbox2');

finish = document.getElementById('rezult');
 
var cb = document.querySelector('#combobox');
var cb1 = document.querySelector('#combobox1');
 
cb.addEventListener("change", myFunc);
cb1.addEventListener("change", myFunc);

ed1_width.addEventListener("change", calculation);
ed2_height.addEventListener("change", calculation);

function calculation(){
calc = ed1_width.value * ed2_height.value;
finish.innerHTML = calc;
}

function up1(e) {
  if (e.value.indexOf(".") != '-1') {
    e.value=e.value.substring(0, e.value.indexOf(".") + 3);
  }
  if(+e.value<+e.getAttribute("min")){
    e.value=e.getAttribute("min");
  }
  else if(+e.value>+e.getAttribute("max")){
    e.value=e.getAttribute("max");
  }
   
}

function up2(e) {
  if (e.value.indexOf(".") != '-1') {e.value=e.value.substring(0, e.value.indexOf(".") + 3);}
  if(+e.value>+e.getAttribute("max")){e.value=e.getAttribute("max");}
}
 
function myFunc () {
  wMin.textContent = values[this.value].wMin;
  wMax.textContent = values[this.value].wMax;
  hMax.textContent = values[this.value].hMax;
  ed1_width.setAttribute("min", values[this.value].wMin);
  ed1_width.setAttribute("max", values[this.value].wMax);
  up1(ed1_width);
  ed2_height.setAttribute("max", values[this.value].hMax);
  up2(ed2_height);
};
 
// Как-будто при загрузке страницы поменяли значение первого чекбокса
myFunc.apply(cb);

</script>
</body>
</html>
Еду медленно, но верно!
spoon100500 вне форума Ответить с цитированием
Старый 11.04.2017, 22:55   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Код:
function calculation(){
  up1(ed1_width);
  up2(ed2_height);
  calc = ed1_width.value * ed2_height.value;
  finish.innerHTML = calc;
}
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массивы. Поменять местами все min и max (даже если будет 4 -min и 1-max). Виталик124 Паскаль, Turbo Pascal, PascalABC.NET 6 19.02.2014 22:44
ошибка в нахождении max и min значений в строке матрицы kasteton Помощь студентам 2 07.01.2014 13:50
n - массивов, разной размерности, нужно найти min и max в этих массивах. Из полученных min найти наименьший элемент, из max наибол dmks Помощь студентам 5 09.10.2013 20:48
списке целых чисел все элементы между max и min заменить полусуммой max и min Roman one C/C++ Базы данных 0 20.12.2012 12:14
Разность max min Си++ Где ошибка? Медина Помощь студентам 18 20.04.2009 00:03