Попробуйте уменьшить:
$('#form').on('submit', function(e) {
var sum = $('input.test').toArray().reduce(function(sum, element) {
var num = isNaN(element.value)?0:+element.value; // find the number
return sum + num;
}, 0);
console.log(sum);
if (sum===0) e.preventDefault(); // stop submission
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="form">
<table>
<tbody>
<tr>
<td><input class="test" name="price[]" type="text"></td>
</tr>
<tr>
<td><input class="test" name="price[]" type="text"></td>
</tr>
<tr>
<td><input class="test" name="price[]" type="text"></td>
</tr>
<tr>
<td><input class="test" name="price[]" type="text"></td>
</tr>
<tr>
<td><input type="submit"></td>
</tr>
</tbody>
</table>
</form>
Если вы не хотите перебегать через все (т. Е. Уходите, как только что-то заполнено, вы можете использовать каждый, который разрешает отправку 1,а, с например
$('#form').on('submit', function(e) {
var sum = 0;
$('input.test').each(function() {
sum += isNaN(this.value)?0:+this.value; // find the number
return !sum; // leave the each when it is truthy
});
console.log(sum);
if (sum===0) e.preventDefault(); // stop submission
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="form">
<table>
<tbody>
<tr>
<td><input class="test" name="price[]" type="text"></td>
</tr>
<tr>
<td><input class="test" name="price[]" type="text"></td>
</tr>
<tr>
<td><input class="test" name="price[]" type="text"></td>
</tr>
<tr>
<td><input class="test" name="price[]" type="text"></td>
</tr>
<tr>
<td><input type="submit"></td>
</tr>
</tbody>
</table>
</form>