【问题标题】:Try to validate IP Address with javascript尝试使用 javascript 验证 IP 地址
【发布时间】:2016-12-22 06:30:28
【问题描述】:

我是 javascript 的初学者。现在,我正在尝试制作一个表单以发回服务器。有一些“输入”包含应在提交前验证的 IP 地址。现在我已经完成了一个运行良好的 javascript 函数。但现在我正在尝试将此功能添加到 jquery 选择中。只是混淆如何去做。

这是我的验证 javascript 代码。

function ValidateIPaddress(Ipfield)  
 {  
    IpAddr=Ipfield.value;
    var ipformat = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;  

    if(!IpAddr.match(ipformat))  
        return true;  
    else
        return false;

 }

这就是我现在实现此验证的方式。

<input type= "text" name= "LocalIP" style= "margin-right:10px " value="192.168.1.193" class="ip" onfocusout="ValidateIPaddress(document.getElementById('LocalIp'))" id="LocalIp" >            Remote VIP Address :             
                <input type= "text" name= "RemoteVIPAddr" style= "margin-right:10px" value="234.5.6.7" class="ip"  onfocusout="ValidateIPaddress(document.getElementById('RemoteIp'))" id="RemoteIp" >
                Remote VIP Port :             
                <input type= "text" name= "RemoteVIPPort" style= "margin-right:10px" value="5004" class="ip"  onfocusout="ValidatePort(document.getElementById('RemoteVIPPort'))" id="RemoteVIPPort">

现在我想使用 jquery selection 来检查是否有一些无效的输入。就像这样,但有我自己的设计功能。

$("input.ip:visible").filter(function() { return this.ValidateIPaddress === true }).addClass("invalid");

有人知道吗?

【问题讨论】:

  • 编写一个返回truefalse的验证函数。然后您可以在filter 函数和ValidateIPAddress 中使用它。
  • 我更新了我的问题陈述
  • 这是我尝试的,但似乎不起作用。
  • this.ValidateIPAddress == true 不调用该函数。
  • 而且ValidateIPAddress 不是 DOM 方法。

标签: javascript html


【解决方案1】:

看看这是否有帮助。这仅对 IP4 有效。 0.0.0.0 - 无效 任何带有 CIDR 的 ip 都无效

function validateIP(ip) {
    is_valid = false;
    ip = ip.replace(/\s+/, "");

    if(ip.indexOf('/')!=-1){
        alert("IP not valid");
        return false
    }
    
    try {
        var ipb = ip.split('.');
        if (ipb.length == 4) {
            for (i = 0; i < ipb.length; i++) {
                b = parseInt(ipb[i]);    
                if (b >= 0 && b <= 255) {
                    is_valid = true;
                } else {
                    is_valid = false;
                    break;
                }
            }
        }
    } catch (exception) {
        alert("IP is not valid")
        return false;
    }
    if (!is_valid) {
        alert("IP is not valid")
        return false;
    }
    return true;
}

【讨论】:

    【解决方案2】:

    如果还需要接受 CIDR 格式 IP/{0-32},请更新以下 2 行:

    if (!ip.match(/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(\/([0-9]|[12][0-9]|3[0-2]))?$/)) {
    return ip.split('/')[0].split('.').filter(octet => octet >= 0 && octet <= 255).length === 4;
    

    【讨论】:

      【解决方案3】:

      试试这个:

      isIP(ip) {
        if (typeof(ip) !== 'string')
          return false;
        if (!ip.match(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/)) {
          return false;
        }
        return ip.split('.').filter(octect => octect >= 0 && octect <= 255).length === 4;
      }
      

      原文:https://stackoverflow.com/a/50612630/3261332

      【讨论】:

        【解决方案4】:

        您没有在过滤器函数中调用ValidateIPAddress,您只是在测试DOM 元素是否具有名为ValidateIPAddress 的非空属性。应该是:

        $("input.ip:visible").filter(function() {
            return ValidateIPAddress(this);
        }).addClass("invalid");
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-05-13
          • 2012-02-29
          • 1970-01-01
          • 2011-06-12
          • 1970-01-01
          • 2013-06-13
          • 2012-07-03
          相关资源
          最近更新 更多