Я пытаюсь выполнить некоторые вычисления на некоторых динамически генерируемых строк в моих table.The вариантов dropdowm все несут числовые значения и на основе значений будет рассчитали RiskOfObsctacle и ValueOfObstacle:
ValueOfObstacle = Вероятность Степень серьезности Principal;
RiskOfObsctacle = Вероятность * Степень серьезности;Выполнение расчетов по динамически генерируемых строк (JQuery)
У меня нет проблем с добавлением/удалением строк, но проблема отображает результаты после ввода значений.
Вот мой JQuery код для создания строки:
function addRow(tableID) {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
var cell1 = row.insertCell(0);
var element1 = document.createElement("input");
element1.type = "checkbox";
element1.name="chkbox[]";
cell1.appendChild(element1);
var cell2 = row.insertCell(1);
cell2.innerHTML="<textarea name='Obstacle[]' cols='20'>";
var cell3 = row.insertCell(2);
cell3.innerHTML = "<select name='Likelihood[]'> onKeyup='calc() <option value='1'>Low</option> <option value='2'>Medium</option><option value='3'>High</option>/>";
var cell4 = row.insertCell(3);
cell4.innerHTML = "<select name='Severity[]'> onKeyup='calc() <option value='1'>Low</option> <option value='2'>Medium</option><option value='3'>High</option>/>";
var cell5 = row.insertCell(4);
cell5.innerHTML = "<select name='Priority[]'> onKeyup='calc() <option value='1'>Low</option> <option value='2'>Medium</option><option value='3'>High</option>/>";
var cell6 = row.insertCell(5);
cell6.innerHTML = "<input type = 'text' name='Principal[]' required placeholder='100.3' onKeyup='calc()'>";
var cell7 = row.insertCell(6);
cell7.innerHTML = "<input type = 'text' name='ObsRisk[]' readonly value onKeyup='calc()'>";
var cell8 = row.insertCell(7);
cell8.innerHTML = "<input type = 'text' name='ObsValue[]' readonly onKeyup='calc()'>";
}
А вот код для выполнения расчетов:
function calc(){
$('.Likelihood, .Severity, .Principal').change(function(){
var value = 0;
var $row = $(this).closest("tr");
var like = parseFloat($row.find('Likelihood').val());
var sev = parseFloat($row.find('Severity').val());
var prin = parseFloat($row.find('Principal').val());
value = like*sev*prin;
if (isNaN(value)) {
$row.find('.ObsValue').value("Nix is");
}
else{
$row.find('.ObsValue').val(value);
}
calc();
});
}
Также на основе результатов цвет текста должен изменить т.е. зеленый, если положительный и красный, если отрицательный. Спасибо за помощь.
Пожалуйста, дайте мне знать, если больше информации необходимо!
Если вы используете JQuery, почему создавать строки, используя обычный JavaScript? Кроме того, ваши избранные классы не имеют классов, но jQuery, который вы разместили, имеет несколько целей: '$ ('.Likelihood, .Severity, .Principal')'. Поэтому ваш пример кода кажется неполным. – j08691
Это всегда хорошая идея создать jsfiddle для таких вопросов. –
Хорошо спасибо. Я изменю код с помощью jQuery через несколько минут .. и отправьте ссылку для jsfiddle. спасибо – saint