Ipv4验证Jquery

时间:2012-06-06 19:52:00

标签: jquery html

我正在尝试编写一个验证IPv4地址的函数。

一切似乎都没问题,但似乎找不到正确的课程。

我的代码在这里:http://jsfiddle.net/felix001/X7EuJ/23/

<label for="input">IP</label>
<input type="text" name="input"  id="input" size="22" />
<input type="submit" value="submit" "whatmask_input" id="submit"  align="right" />

JavaScript的:

function ipv4addr(x) {
    var REGEX = /^(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 ($x != $REGEX) {
        $("#input").addClass(".bad");
    }
    else {
        $("#input").addClass(".good");
    }
}

$(document).ready(function() {
    $("#submit").click(ipv4addr("#input"));

});

有人能告诉我解决此问题的最佳方法吗?

谢谢,

2 个答案:

答案 0 :(得分:2)

在您打开fiddler页面的同时加载浏览器的开发工具控制台(例如,在Chrome中)。

第一个错误是:

ReferenceError: Can't find variable: $x

不需要在变量名前加上$,$foofoo是两个不同的变量名。如果您有var foo,则foo是变量名称。

看看代码,这可能不符合你的期望:

$("#submit").click(ipv4addr("#input"));

这与:

相同
var result = ipv4addr("#input");
$("#submit").click(result);

也就是说,将调用ipv4addr(始终未定义)的返回值传递给click方法。您可能希望传递一个函数来代替每次点击调用。

答案 1 :(得分:1)

尝试此功能:

function isDottedIPv4(s)
{
 var match = s.match(/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/);
 return match != null &&
        match[1] <= 255 && match[2] <= 255 &&
        match[3] <= 255 && match[4] <= 255;
}

isDottedIPv4("127.0.0.001") // true
isDottedIPv4("448.90210.0.65535") // false
isDottedIPv4("microsoft.com") // false