限制用户在html输入中输入范围内的值(类型=数字)
Restrict user to put value in range in html input (type = number)
如何阻止用户在html输入(type=number)中添加大于最大值且小于最小值的数字
<input id="ageRange" type="number" min=20 max= 50 maxlength=2></input>
我尝试了一个javascript代码,但它在我们添加值后进行了更改,然后更改了值。有没有什么方法可以阻止用户将值放在范围内,或者当我们用程序更改值时,输入单元格中没有闪烁?
您需要在低级别处理输入并执行自己的检查。为了防止用户键入大于最大值的值,您可以处理keypress
事件,然后检查输入字符以及它是否会使值过大:
<input id="ageRange" type="number" min=20 max= 50 maxlength=2>
<script>
document.getElementById('ageRange').onkeypress =
function (e) {
var ev = e || window.event;
if(ev.charCode < 48 || ev.charCode > 57) {
return false; // not a digit
} else if(this.value * 10 + ev.charCode - 48 > this.max) {
return false;
} else {
return true;
}
}
</script>
这样可以防止用户通过粘贴插入更大的值。
为了防止用户删除字符,从而使值变得太小,您需要处理rubout键,由于键盘的差异,这个键的问题更大。但它的可用性很差。假设用户键入30,然后意识到他想要键入40。防止将值更改为太小的代码将阻止删除任何一个数字!
浏览器应该有自己的<input type=number>
用户界面,这就是使用它的原因。该界面不是为了防止用户键入过大的值,而是为了检测并报告这些值,以便用户可以更正它们。在尝试对其进行实质性修改之前,请考虑潜在的混淆。如果您添加了防止超出范围值的代码,浏览器将不会显示诊断消息(例如"Number must be less or equal to 50"),因为如果它们支持<input type=number>
,则默认情况下会显示诊断消息,因此您的JavaScript代码可能应该发出自己的诊断消息。
阅读输入元素文档。
或者:
阅读HTML5约束验证
<input id="age" pattern="[0-9]" value="9" />
<script>
document.getElementById('age').validity.patternMismatch;
</script>
然后读取与匹配的Regex数值范围
试试这个:
var max = 100;
$('input').keyup(function(){
var inputValue = $(this).val();
if(inputValue > max){
alert('greater!');
$(this).val('')
}
})
这是jsfiddle:http://jsfiddle.net/h07Lc0Ld/1/
将值设置为最小…
<form>
<input id="ageRange" type="number" min="20" max="50" value="20"></input>
</form>
相关文章:
- 在<输入类型=“;文件“/>
- 如何将输入类型值或id从一个jsp传递到另一个jsp页面
- 可以't将几个数字设置为<输入类型=“;数字“>
- 在输入类型日期中设置日期
- 如何将键入的文本从一个输入类型的文本复制到另一个
- 输入类型按钮返回历史记录并返回顶部
- 从HTML表单发布blob的表单输入类型是什么
- 输入类型文件的未捕获类型错误
- 如何在jQuery Mobile中设置100%宽度的输入类型日期
- 输入类型=文件验证停止其他输入类型验证
- 如何显示在输入类型文件中选择的文件
- jQuery Modal Popup-回发后输入类型设置为null
- 在控制器中将输入类型时间更改为秒
- 更改具有相同id的输入类型的所有值
- 对于每个输入类型,使用javascript获取值
- 输入类型范围在angularjs重复内不起作用
- 我如何使HTML5<输入类型=月份>以在所有浏览器上工作
- 如何调用两个函数是一种html输入类型
- 如何使按钮作为输入类型文件
- 可以设置输入类型=文件的文本框的高度