Here is the code I have so far and the limiting functions that I want the input for to reject
any help would be greatly appreciated
function myFunction(e, low, high) {
console.log("called");
console.log("low" + low);
console.log("high" + high);
console.log(e.target.value + e.key);
var charValue = String.fromCharCode(e.keyCode);
var nextValue = e.target.value + e.key;
if (((!/^(\d+)?([.]?\d{0,1})?$/.test(e.target.value + e.key)) && (e.which != 8)) && (nextValue < 1 || nextValue > 5)) {
e.preventDefault()
}
}
<!DOCTYPE html>
<html>
<form name="addtext">
SetPoint :<input id="setPoint" type="text" name="setPoint" onkeydown="myFunction(event,3, 5)" /><br />
</form>
Unless you're playing Code Golf, there are no prizes for cramming all the logic into a single condition.
Split the condition into multiple if statements so you can implement your logic clearly.
You need to replace the hard-coded 1 and 5 with low and high.
function myFunction(e, low, high) {
console.log("called");
console.log("low" + low);
console.log("high" + high);
var nextValue = e.target.value + e.key;
console.log(nextValue);
if (e.which == 8) { // allow backspace
return;
}
if (!/^(\d+)?([.]?\d{0,1})?$/.test(nextValue)) {
e.preventDefault(); // non-number, don't allow
}
if (nextValue < low || nextValue > high) {
e.preventDefault();
}
}
<!DOCTYPE html>
<html>
<form name="addtext">
SetPoint :<input id="setPoint" type="text" name="setPoint" onkeydown="myFunction(event,3, 5)" /><br />
</form>
Or, you could use an input that is made for this. No javascript required.
<input id="range" value="1" type="range" step="0.1" min="0.1" max="5.0">