我正在尝试编写一个验证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"));
});谁能告诉我解决这个问题的最好方法?
谢谢,
发布于 2012-06-07 03:57:02
打开提琴页面时,加载浏览器的开发工具控制台(例如,在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-07 03:56:30
尝试此函数:
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") // falsehttps://stackoverflow.com/questions/10921177
复制相似问题