Вот некоторые вещи, которые я заметил:
- Я не уверен, почему вы используете два разных метода, один для
twoDecPlaces
, а другой для fourDecPlaces
.
- Вам не нужно вставлять ячейки таблицы с данными для отображения результатов. Я бы просто поместил текст в таблицу (но скрытый), поэтому вам нужно только обновить значение.
Вот как я бы изменил таблицу результатов (включая CSS):
<style type="text/css">
.text, .val { display: none; }
</style>
<table>
<tr id="valuePaid"><td class="text">The total dividend paid was:</td><td class="val"></td></tr>
<tr id="divpershare"><td class="text">The dividend per share was:</td><td class="val"></td></tr>
</table>
И это будет ваш скрипт для работы с вышеупомянутым HTMl. Это было очищено и jQuerified:)
function twoDecPlaces(theValue) {
return theValue.toFixed(2);
}
function fourDecPlaces(theValue) {
return theValue.toFixed(4);
}
function isNumber(val) {
if (isNaN(val) || val == 0) { return false; }
return true;
}
function doCalc(){
if (isNumber($('#num_shares').val())) {
var currency = $('#currency').val();
var dividendValue = $('#dividend_rate').val();
var num_shares = parseInt($('#num_shares').val(),10);
var divpersharevalue = fourDecPlaces(dividendValue/1000) + " " + currency;
var totalDividend = twoDecPlaces((dividendValue * num_shares)/100) + " " + currency;
$('#valuePaid').find('.val').html(totalDividend);
$('#divpershare').find('.val').html(divpersharevalue);
$('.text, .val').show();
} else {
alert("Invalid entry in dividend box");
$('#num_shares').val('');
$('.text').hide();
$('.val').empty();
}
}
Если вы хотите ограничить поле ввода, чтобы в него можно было вводить только цифры, есть несколько доступных плагинов jQuery. Вот тот, который называется Числовой .