Regex 仅用于正整数的HTML输入(类型=数字)
我找不到合适的正则表达式模式,尽管在这方面有很多问题 我不希望用户能够键入或输入Regex 仅用于正整数的HTML输入(类型=数字),regex,html,validation,Regex,Html,Validation,我找不到合适的正则表达式模式,尽管在这方面有很多问题 我不希望用户能够键入或输入 <td><input type="number" pattern=" 0+\.[0-9]*[1-9][0-9]*$" name="itemConsumption" /></td> -1.0(负值) 字符串值和任意字符 1.0(十进制值) 无射程限制 我只想接受正整数 解决 不需要正则表达式,我不知道这个:D <td><input type="number"
<td><input type="number" pattern=" 0+\.[0-9]*[1-9][0-9]*$" name="itemConsumption" /></td>
<td><input type="number" pattern=" 0+\.[0-9]*[1-9][0-9]*$" name="itemConsumption" onkeypress="return event.charCode >= 48 && event.charCode <= 57"</td>
只允许使用数值,如下所示:
<td><input type="number" pattern="\d+" name="itemConsumption" /></td>
要禁止除数字以外的任何输入,您可以使用
<input type="text" onkeypress="return (event.charCode == 8 || event.charCode == 0 || event.charCode == 13) ? null : event.charCode >= 48 && event.charCode <= 57" name="itemConsumption" />
^------------....
^------------....
仅输入数字:
最好在输入字段中使用以下字符,它将阻止您输入除整数以外的任何其他字符
只接受整数
onkeypress="return (event.charCode == 8 || event.charCode == 0) ? null : event.charCode >= 48 && event.charCode <= 57"
onkeypress=“return(event.charCode==8 | | event.charCode==0)?null:event.charCode>=48&&event.charCode如果涉及HTML5,则可以尝试属性:
<input type="number" min="0">
您可以将此正则表达式模式用于整数[0-9]*或\d*
[0-9]是您可以键入0到9的范围,*表示不需要任何数字,或者您可以键入无限数您可以使用键入、min和输入
<input type="number" min="0" step="1" oninput="validity.valid||(value='');">
仅用正数输入
也许会对某人有所帮助。
用于type=“number”(不是“text”):
仅允许[0-9]输入。在输入中,将仅打印/粘贴具有最小-最大范围(可选)的数字[0-9]
一些解释:该代码在输入阶段仅显示数字,如果输入的数字值无效,则不会将该值重置为“”(空)。对于输入类型=“数字”,您不能使用属性模式=“/^[0-9]*$/”
var$inputAbsint=$('.js input absint');
如果($InputBSint.length){
$(文档).on('keypress','js input absint',函数(事件){
允许变量=/^[0-9]|箭头(左|右)|退格|主页|结束|删除$/;
允许返回.test(event.key);
}).on('focusout paste','js input absint',函数(){
var$input=$(此);
var defaultValue=this.defaultValue | |$input.attr('min');
//重要提示(!):更新值超时
setTimeout(函数(){
var current=$input.val();
var regexNumbers=new RegExp(/^[0-9]*$/,'g');
var isNumbersOnly=regexNumbers.test(当前);
//清除错误值(不是数字)
if((当前==“”| |!isNumbersOnly)&&defaultValue.length){
$input.val(默认值);
当前=默认值;
}
//最小/最大
var min=parseInt($input.attr('min'),10);
var max=parseInt($input.attr('max'),10);
var currentInt=parseInt(当前,10);
如果(!isNaN(min)&&!isNaN(currentin)&¤tinmax){
$input.val(最大值);
}
}, 100);
});
}
您不能按键盘上的“-”按钮
<!--HTML Code is below-->
<input type="text" name="value1" id="value1" class="form-control" required="required" onkeyup="keyCode(event)">
<!--JQuery Code is below-->
<script>
$(document).ready(function() {
$value1.on("keyup", function keyCode(event){
var x = event.keyCode;
if (x == 109 || x == 189) {
event.preventDefault();
alert ("You can't enter minus value !");
}
});
});
</script>
$(文档).ready(函数(){
$value1.on(“键控”,功能键控代码(事件){
var x=event.keyCode;
如果(x==109 | | x==189){
event.preventDefault();
警告(“您不能输入负值!”);
}
});
});
“109”的键码代表键盘的数字侧减号按钮。“189”的键码代表字符按钮上方的减号按钮。我尝试了许多不同的解决方案来实现这一点,最后我找到了这个,它对我们来说非常适合。它可以用于打字和复制/粘贴,我找不到任何不需要的ide效果
<form>
<input
type="number"
min="0"
step="1"
onfocus="this.previousValue = this.value"
onkeydown="this.previousValue = this.value"
oninput="validity.valid || (value = this.previousValue)"
/>
</form>
它类似于Nikhil Mahirro的解决方案,但它会导致无效的击键被忽略而不清空输入。为什么要使用锚定?模式属性默认被锚定。@Stribizev,对我来说,它使表达式更严格它看起来像/^(?:^\d+$)$/
用于内部引擎。相当笨拙:)@Stribizev,感谢您的教训,它看起来真的很笨拙。我主要使用sql的regexp,因为我不知道这一点。这一行仍然接受负值-。(供将来参考)我的两分钱:
。请说明您希望允许的内容。我认为这会更容易。我认为您缺少一件事:模式
属性只允许在提交时控制数据。用户键入时不允许。请尝试。@SCS:请提供一些反馈,我们对您是否解决了该问题感兴趣。@stribizev感谢您的帮助代码。如果添加了上述代码,firefox backspace和delete键将无法正常工作。@MohitAdwani:Try:onkeypress=“return(event.charCode==8 | | event.charCode==0)?null:event.charCode>=48&&event.charCode现在工作正常。我认为你应该更新你的答案。或者,您发布的内容可能是用户想要的。您还应该在其中添加字符代码13-否则,您在该字段中时无法按Enter键提交表单。这可能是使用复制粘贴的无效值的解决方法(或滥用)。为什么要重新发布我的答案?请在答案中发布代码,以防出现链接expires@Harvey,是的,最大值也适用,但本例仅适用于正数。这很完美,也适用于粘贴,而@wiktor stribiżew的解决方案不适用
<!--HTML Code is below-->
<input type="text" name="value1" id="value1" class="form-control" required="required" onkeyup="keyCode(event)">
<!--JQuery Code is below-->
<script>
$(document).ready(function() {
$value1.on("keyup", function keyCode(event){
var x = event.keyCode;
if (x == 109 || x == 189) {
event.preventDefault();
alert ("You can't enter minus value !");
}
});
});
</script>
<form>
<input
type="number"
min="0"
step="1"
onfocus="this.previousValue = this.value"
onkeydown="this.previousValue = this.value"
oninput="validity.valid || (value = this.previousValue)"
/>
</form>