gpt4 book ai didi

JavaScript 只接受 0 到 255 范围内的数字

转载 作者:行者123 更新时间:2023-11-29 22:19:05 25 4
gpt4 key购买 nike

我的要求是验证 ip 范围,我需要创建一个 JavaScript 函数来只接受数字,并且它必须只允许 0 到 255 之间的范围。如果输入超出该范围的任何内容,它必须警告消息。

我目前正在使用下面这个功能

<script language="JavaScript"> 

function allownums(a)
{

if(a <48 ||a > 57)
alert("invalid")
else
alert("vaild")
}

</script>
<input type='text' id='numonly' onkeypress='allownums(event.keycode)'>

我是 JavaScript 的新手,需要一些专家的建议来解决我的要求。请推荐我

谢谢苏迪尔

最佳答案

目前你有测试

(a < 48) || (a > 57)

用于无效值。所以我会改变那些:

(a < 0 ) || (a > 255)

您可能还需要考虑如何处理非整数输入,例如 2.3 - 将其舍入或将其视为无效。

目前,正如 Kelvin Mackay 指出的那样,您正在对按键事件而不是输入值执行验证,因此将 onkeypress 更改为 allownums(this.value)

我建议将警报更改为 div 中的警告,并使用验证来启用/禁用提交按钮,因为弹出窗口在几乎所有情况下都非常烦人。

在进行无效输入时清除输入(如评论中所要求的那样)会让用户感到相当烦人;一旦按下一个键添加一个数字并使输入无效,整个输入被清除。然而,代码将是:

if(!validnum(this.value)) 
this.value="";

在输入标签中,因此:

<input type='text' id='numonly' 
onkeyup='if(!validnum(this.value)) this.value="";'>

功能更改为:

function validnum(a) { 
if(a < 0 || a > 255)
return false;
else
return true;
}

或更简洁:

function validnum(a) {
return ((a >= 0) && (a <= 255));
}

编辑:提醒和清除框,如果必须:

function validOrPunchTheUser(inputElement) {
if(!validnum(inputElement.value)) {
window.alert('badness'); // punch the user
inputElement.value = ""; // take away their things
}
}

<input type='text' id='numonly'
onkeyup='validOrPunchTheUser(this)'>

但是,阅读其他答案,显然您正在寻找验证八位字节(例如在 IP 地址中)。如果是这样,请在问题中说明这一点,因为它今天已经过去了。对于八位字节:

function validateIPKeyPress(event) {
var key = event.keyCode;
var currentvalue = event.target.value;
if(key < 96 || key > 105)
{
event.preventDefault();
window.alert('pain');
return false;
}
else if(currentvalue.length > 2 ||
(currentvalue.length == 2 &&
key > 101)) {
window.alert('of death');
event.preventDefault();
event.target.value = event.target.value.substring(0,2);
}
else
return true;
}

使用输入标签:

<input type='text' id='octet'
onkeydown='validateIPKeyPress(event)'>

除非请不要使用警报。如果你去掉警告行,它会默默地阻止无效输入。请注意现在使用 onkeydown 的更改,以便我们可以捕获无效的按键操作并完全防止值更改。如果必须清除输入,则执行 if(!validateIPKeyPress(event)) this.value = "";

关于JavaScript 只接受 0 到 255 范围内的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13413320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com