У вас довольно много мелких ошибок в коде.Не волнуйтесь, их легко пропустить.При разработке нужно помнить о том, что ваши интересы должны быть разделены, потому что ваше будущее и другие разработчики, работающие с вашим кодом, будут вам благодарны.Под разделением интересов в этом контексте я подразумеваю логику против шаблонизации.HTML принадлежит шаблонам, а JavaScript - ваша логика.Когда вы пишете встроенный JavaScript, например <input onblur="if(this.value == ''){this.value='0'}">
, это делает ваш JavaScript очень сложным для отслеживания и поддержки.В вашем файле JavaScript вы можете использовать document.getElementById('demo').onblur = if(this.value == ''){this.value='0'};
вместо этого, и теперь вся ваша логика может быть найдена в одном месте.Лично я предпочитаю прослушиватели событий, потому что в отличие от onblur, вы можете назначить несколько функций данному событию, и вы рискуете перезаписать любую функциональность, которая была написана где-то еще.
Предполагая var el = document.getElementById('demo');
МЕТОД 1:
el.onblur = if(this.value == ''){this.value='0'};
// This overwrites the onblur function from the line above
el.onblur = alert('hello');
МЕТОД 2:
el.addEventListener('blur', function() { if(this.value == ''){this.value='0'} });
// This does not overwrite the function above,
// instead, it just adds another function to the event.
el.addEventListener('blur', function() { alert('hello'); });
Кроме этого, я считаю, что ваш код будет работать с несколькими исправлениями ваших ошибок.Чтобы помочь вам, я написал альтернативу вашим сценариям выше.Я не уверен, что все получилось так, как вы хотели, так что не стесняйтесь настраивать его и делать его своим.
var sum1 = document.getElementById("sum1");
var sum2 = document.getElementById("sum2");
var resultado = document.getElementById("resultado");
var premium = document.getElementById("premium");
var insurance = document.getElementById("insurance");
function calculateFields() {
var suma = (sum1.value * sum2.value);
resultado.value = suma;
premium.value = (0.01 * suma);
}
var inputs = [sum1, sum2, resultado, premium, insurance];
inputs.forEach(function(el) {
el.addEventListener('blur', function() {
this.value = this.value === '' ? 0 : this.value;
});
el.addEventListener('input', calculateFields);
});
Возиться с кодом на jsfiddle .