I have made a table where I have to enter some values for calculating the average of certain values. I have a submit button for submitting the form and store the values into a database.
When I don't enter any data and submit the form, 0 values are stored into the database. So I have to validate each of the text boxes. How can I do that with JavaScript?
function calcAvg(input_id, output_id, att_id) {
//Get all elements with 'class="select"'
var selects = document.getElementsByClassName(input_id);
//Initialize vars
var avg = 0;
var count = 0;
var grade = 0;
//Calculate average
for (var i = 0; i < selects.length; i++) {
if (selects[i].value != "") {
count++;
avg += Number(selects[i].value);
//Alert for debugging purposes
//alert(selects[i].value+" "+avg);
}
}
avg = avg / count;
//Output average
document.getElementById(output_id).value = avg;
if (avg >= 80)
grade = 'HIGH';
else if (avg >= 60 && avg < 80)
grade = 'MEDIUM';
else if (avg >= 40 && avg < 60)
grade = 'LOW'
else
grade = 'N/A'
//Output average
document.getElementById(att_id).value = grade;
}
<form method='POST'>
<table>
<tr>
<td height="41" colspan="12" align="center">ATTAINMENT OF PO( PO-CO MAPPING)
</td>
</tr>
<tr>
<td width="17%" rowspan="2" align="center">NAME OF THE MODULES</td>
<td height="34" colspan="11" align="center">PROGRAME OUTCOMES</td>
</tr>
<tr>
<td width="7%" align="center">PO1</td>
<td width="7%" align="center">PO2</td>
</tr>
<tr>
<td height="71" align="center">MATHEMATICS</td>
<td align="center"><input type="number" class="select1" name="value[]" onKeyPress="if(this.value.length==2) return false;" onChange="calcAvg('select1','calculation1','calatt1');" style="width:60px"> </td>
<td align="center"><input type="number" class="select2" name="value[]" onKeyPress="if(this.value.length==2) return false;" onChange="calcAvg('select2','calculation2','calatt2');" style="width:60px"> </td>
</tr>
<tr>
<td height="71" align="center">SCIENCE</td>
<td align="center"><input type="number" class="select1" name="value[]" onKeyPress="if(this.value.length==2) return false;" onChange="calcAvg('select1','calculation1','calatt1');" style="width:60px"> </td>
<td align="center"><input type="number" class="select2" name="value[]" onKeyPress="if(this.value.length==2) return false;" onChange="calcAvg('select2','calculation2','calatt2');" style="width:60px">
</td>
</tr>
<tr bgcolor="#9999CC">
<td height="71" align="center">PO AVERAGES</td>
<td align="center"><input type="text" name="Avg" id="calculation1" readonly style="width:60px"> </td>
<td align="center"><input type="text" name="Avg1" id="calculation2" readonly style="width:60px"> </td>
</tr>
<tr>
<td height="71" align="center">PO ATTAINMENT</td>
<td align="center"><input type="text" name="Att1" id="calatt1" readonly style="width:60px"> </td>
<td align="center"><input type="text" name="Att2" id="calatt2" readonly style="width:60px"> </td>
</tr>
</table>
<p align="center"><input type="submit" name="submit" value="submit"></p>
</form>
<script type="text/javascript">
function calcAvg(input_id, output_id, att_id) {
//Get all elements with 'class="select"'
var selects = document.getElementsByClassName(input_id);
//Initialize vars
var avg = 0;
var count = 0;
var grade = 0;
//Calculate average
for (var i = 0; i < selects.length; i++) {
if (selects[i].value != "") {
count++;
avg += Number(selects[i].value);
//Alert for debugging purposes
//alert(selects[i].value+" "+avg);
}
}
avg = avg / count;
//Output average
document.getElementById(output_id).value = avg;
if (avg >= 80)
grade = 'HIGH';
else if (avg >= 60 && avg < 80)
grade = 'MEDIUM';
else if (avg >= 40 && avg < 60)
grade = 'LOW'
else
grade = 'N/A'
//Output average
document.getElementById(att_id).value = grade;
}
</script>
<form method='POST'>
<table>
<tr>
<td height="41" colspan="12" align="center">ATTAINMENT OF PO( PO-CO MAPPING)
</td>
</tr>
<tr>
<td width="17%" rowspan="2" align="center">NAME OF THE MODULES</td>
<td height="34" colspan="11" align="center">PROGRAME OUTCOMES</td>
</tr>
<tr>
<td width="7%" align="center">PO1</td>
<td width="7%" align="center">PO2</td>
</tr>
<tr>
<td height="71" align="center">MATHEMATICS</td>
<td align="center"><input type="number" class="select1" name="value[]" onKeyPress="if(this.value.length==2) return false;" onChange="calcAvg('select1','calculation1','calatt1');"
style="width:60px"> </td>
<td align="center"><input type="number" class="select2" name="value[]" onKeyPress="if(this.value.length==2) return false;" onChange="calcAvg('select2','calculation2','calatt2');"
style="width:60px"> </td>
</tr>
<tr>
<td height="71" align="center">SCIENCE</td>
<td align="center"><input type="number" class="select1" name="value[]" onKeyPress="if(this.value.length==2) return false;" onChange="calcAvg('select1','calculation1','calatt1');"
style="width:60px"> </td>
<td align="center"><input type="number" class="select2" name="value[]" onKeyPress="if(this.value.length==2) return false;" onChange="calcAvg('select2','calculation2','calatt2');"
style="width:60px">
</td>
</tr>
<tr bgcolor="#9999CC">
<td height="71" align="center">PO AVERAGES</td>
<td align="center"><input type="text" name="Avg" id="calculation1" readonly style="width:60px"> </td>
<td align="center"><input type="text" name="Avg1" id="calculation2" readonly style="width:60px"> </td>
</tr>
<tr>
<td height="71" align="center">PO ATTAINMENT</td>
<td align="center"><input type="text" name="Att1" id="calatt1" readonly style="width:60px"> </td>
<td align="center"><input type="text" name="Att2" id="calatt2" readonly style="width:60px"> </td>
</tr>
</table>
<p align="center"><input type="submit" name="submit" value="submit"></p>
</form>