[英]Javascript input field onchage/oninput
请帮忙,如何在javascript中进行这样的输入? 可以输入的最小数字 = 0.01 可以输入的最大数字 = 94.99 如果超过最小/最大,它将自动返回到最小/最大的默认数字。 同时,如果您输入数字 01.21,数字将自动变为 1.21
感谢您花时间回答,并提供指导。
我试过这样但它不起作用
function minmax(value, min, max) { if (parseInt(value) < 0.01 || isNaN(value)) return 0.01; else if (parseInt(value) > 94.99) return 94.99; else return value; }
<input type="text" name="textWeight" id="txtWeight" maxlength="5" onkeyup="this.value = minmax(this.value, 0.01, 94.99)" />
您可以为此使用onchange事件或将事件侦听器添加到输入字段和 min, max 以指定最大和最小数量。
<input id="input1" type="number" onchange="minmax()" min="0.01" max="94.99">
然后,您可以使用 javascript 使用 if 条件将用户输入的值与最小值和最大值进行比较。 如果用户输入的值无效,只需将输入字段值替换为最小值或最大值!
使用parseFloat()因为您正在处理浮点数。
function minmax() {
let inp_field = document.getElementById("input1");
let val = parseFloat(inp_field.value),
min = parseFloat(inp_field.min),
max = parseFloat(inp_field.max);
if (val < min) {
inp_field.value = min;
} else if (val > max) {
inp_field.value = max;
} else {
inp_field.value = val;
}
}
对于最后一部分, parseFloat将通过清除前导零自动为您执行此操作。
有两个事件处理程序limitRange()
绑定到输入事件, keepDot()
绑定到 keyup 事件(在捕获时设置,注意第三个参数是true
)。 keepDot()
只是处理 Firefox 拒绝接受. 钥匙。
x.addEventListener('input', limitRange);
x.addEventListener('keyup', keepDot, true);
它有两个工作。 第一项工作是限制低于 0.01 或高于 94.99 的输入
this.value = +v < .01 ? '.01' : +v > 94.99 ? '94.99' : v;
第二项工作是删除任何前导零
this.value = v.replace(/^0+/, '');
const x = document.querySelector('#x') x.addEventListener('input', limitRange); x.addEventListener('keyup', keepDot, true); function limitRange(e) { let v = this.value; this.value = +v < 0.01 ? '0.01' : +v > 94.99 ? '94.99' : v; this.value = this.value.replace(/^0+(?=\d)/, '') } function keepDot(e) { if (e.key === '.') { this.value = this.value + '.' } }
<input id='x' type='number' min='.01' max='94.99' step='any'>
onchange
方法else return value - 0.01;
返回浮点值parseInt()
返回整数值 使用parseFloat()
返回浮子阀value - 0
删除无用的 0 值,如01.11
到 1.11` function minmax(value, min, max) { if (parseFloat(value) < 0.01 || isNaN(value)) return 0.01; else if (parseInt(value) > 94.99) return 94.99; else return value - 0; }
<input type="text" name="textWeight" id="txtWeight" maxlength="5" onchange="this.value = minmax(this.value, 0.01, 94.99)" />
您好,谢谢您的提问,解决方案很简单,请在下面的代码中试用一次。
<input type="text" name="textWeight" id="txtWeight" maxlength="5" onkeyup="this.value = minmax(this.value, 0.01, 94.99)" />
在这里您需要使用parseFloat()因为您使用的是浮点值。
function minmax(value, min, max) {
if ((parseFloat(value) < 0.01 && value.length > 1) || isNaN(value))
return 0.01;
else if (parseFloat(value) > 94.99)
return 94.99;
else return value;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.