1

我正在尝试编写一个验证 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"));

});

谁能告诉我解决此问题的最佳方法?

谢谢,

4

2 回答 2

2

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

第一个错误是:

ReferenceError: Can't find variable: $x

不需要在变量名前加上 $,$foo并且foo是两个不同的变量名。如果你有var foo,那么foo是变量名。

查看代码,这可能不会达到您的预期:

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

这将与以下内容相同:

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

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

于 2012-06-06T19:57:01.597 回答
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
于 2012-06-06T19:56:30.487 回答