javascript - Prevent an arithmetic operator from immediately following another one -
i have written calculator script allows me type invalid input values 5*****5. such inputs (where 1 arithmetic operator *, + etc follows another) should restricted because make no sense. how can modify code restrict such inputs?
function c(val) { var1 = $("#bar").val(val); } function v(val) { var2 = $("#bar").val($("#bar").val() + val); } function equal() { var3 = c(eval($("#bar").val())); } function reset() { var4 = $("#bar").val(""); } $(document).ready(function() { $("#backspace").click(function() { var barvalue = $("#bar").val(); $("#bar").val(barvalue.substring(0, barvalue.length - 1)); }); }); <p> <input type="text" id="bar" size="15" readonly> <input type="button" value="c" onclick="reset('')"> </p> <p> <input type="button" value="←" id="backspace"> <input type="button" value="" onclick=""> <input type="button" value="" onclick=""> <input type="button" value="" onclick=""> <input type="button" value="" onclick=""> </p> <p> <input type="button" value="7" onclick="v('7')"> <input type="button" value="8" onclick="v('8')"> <input type="button" value="9" onclick="v('9')"> <input type="button" value="/" onclick="v('/')"> <input type="button" value="" onclick=""> </p> <p> <input type="button" value="4" onclick="v('4')"> <input type="button" value="5" onclick="v('5')"> <input type="button" value="6" onclick="v('6')"> <input type="button" value="*" onclick="v('*')"> <input type="button" value="" onclick=""> </p> <p> <input type="button" value="1" onclick="v('1')"> <input type="button" value="2" onclick="v('2')"> <input type="button" value="3" onclick="v('3')"> <input type="button" value="-" onclick="v('-')"> <input type="button" value="" onclick=""> </p> <p> <input type="button" value="0" onclick="v('0')"> <input type="button" value="." onclick="v('.')"> <input type="button" value="+" onclick="v('+')"> <input type="button" value="=" onclick="equal()" id="equal"> <input type="button" value="" onclick=""> </p> <div id="history"></div> here jsfiddle link full source.
use regular expressions. test see if last value +,-,*,or /
if lastchar matches criteria , passed value not anything.
function v(val) { var patt = /\+|\-|\*|\// var barvalue = $("#bar").val(); var lastchar = barvalue.substring(barvalue.length, barvalue.length - 1); if (patt.test(lastchar) && patt.test(val)) { //do nothing current val , lastchar mathematical characters } else { //update formula var2 = $("#bar").val($("#bar").val() + val); } }
Comments
Post a Comment