Когда пользователь нажимает на КНОПКУ 0 или просто с клавиатуры вводит 0 - не желательно чтобы такого рода ввод был невозможен - "035, "00005", так как это калькулятор. То же касается и операторов, например сейчас можно ввести два оператора друг за другом - "/*+".
<div class="calculator">
<div class="screen">
<form>
<span class="display result">0</span>
</form>
<hr/>
<form>
<input type="text" class="display calculating" placeholder="0" onkeyup="return validateNumber(event)" />
</form>
<hr/>
</div>
<div class="keys">
<span onclick="set('(')">(</span>
<span onclick="set(')')">)</span>
<span onclick="del()" class="delete">←</span>
<span onclick="cl()" class="clear">C</span>
<span onclick="set('7')">7</span>
<span onclick="set('8')">8</span>
<span onclick="set('9')">9</span>
<span onclick="set('/')" class="operator">÷</span>
<span onclick="set('4')">4</span>
<span onclick="set('5')">5</span>
<span onclick="set('6')">6</span>
<span onclick="set('*')" class="operator">×</span>
<span onclick="set('1')">1</span>
<span onclick="set('2')">2</span>
<span onclick="set('3')">3</span>
<span onclick="set('-')" class="operator">-</span>
<span onclick="set('0')" class="zero">0</span>
<span onclick="set('.')">.</span>
<span onclick="set('+')" class="operator">+</span>
</div>
</div>
var calc = document.querySelector(".calculating");
var result = document.querySelector(".result");
function set(oper){
calc.value += oper;
result.innerHTML = eval(calc.value);
}
function del(){
var length = calc.value.length;
length--;
calc.value = calc.value.substr(0, length) || 0;
result.innerHTML = eval(calc.value);
}
function cl(e){
e = '0';
calc.value = e;
result.innerHTML = eval(calc.value);
}
function validateNumber(e){
var unicode = e.which || e.keyCode;
if (unicode != 8){
if (unicode < 48 || unicode > 57){
return false;
}
}
result.innerHTML = eval(calc.value || 0);
}
Спасибо за помощь