验证MAC地址onkeyup
Validate MAC Address onkeyup
我正在尝试验证MAC地址的表单字段。
我有这个可以用的。
$('body').on('keyup', '#macAddess', function(e){
var e = $(this).val();
var r = /([a-f0-9]{2})([a-f0-9]{2})/i,
str = e.replace(/[^a-f0-9]/ig, "");
while (r.test(str)) {
str = str.replace(r, '$1' + ':' + '$2');
}
e = str.slice(0, 17);
$(this).val(e)
});
当用户键入时,它正在格式化MAC地址,在每对字符后面添加:
。它只允许a-f和0-9,因此不会添加无效字符。
我想在这个问题上再深入一点。当用户输入MAC地址时,我想要一个类添加到输入中,显示它是错误的,直到输入完全形成的MAC地址。
,
if (MAC is invalid) $('#' + id).addClass('badMac')
因此,如果用户输入一个值,类将被添加,只有当输入一个完全形成和有效的mac时才会被删除。
我想保持在所有与在on('keyup')
功能。
如何测试它是否无效,然后设置类?
您可以使用一个正则表达式来检查MAC地址是否有效:
var regexp = /^(([A-Fa-f0-9]{2}[:]){5}[A-Fa-f0-9]{2}[,]?)+$/i;
var mac_address = $(this).val();
if(regexp.test(mac_address)) {
//valid!
} else {
//invalid!
}
请注意,如果您在keyup事件中写入此语句,您将获得无效语句,直到用户写入完整的有效MAC地址。
编辑
片段工作:
var regexp = /^(([A-Fa-f0-9]{2}[:]){5}[A-Fa-f0-9]{2}[,]?)+$/i;
var mac_address = "fa:09:91:d5:e4:5a";
if(regexp.test(mac_address)) {
console.log("Valid: "+ mac_address);
} else {
console.log("Invalid: "+ mac_address);
}
试试下面的代码:
$('body').on('keyup', '#macAddess', function(e){
var e = $(this).val();
var r = /([a-f0-9]{2})([a-f0-9]{2})/i,
str = e.replace(/[^a-f0-9]/ig, "");
while (r.test(str)) {
str = str.replace(r, '$1' + ':' + '$2');
}
e = str.slice(0, 17);
$(this).val(e);
var regexp = /^(([A-Fa-f0-9]{2}[:]){5}[A-Fa-f0-9]{2}[,]?)+$/i;
var mac_address = $(this).val();
if(regexp.test(mac_address)) {
//valid!
} else {
//invalid!
}
});
function isValidMac(mystring){
var regex = /^([0-9A-F]{2}[:-]){5}([0-9A-F]{2})$/;
return regex.test(mystring);
}
$('body').on('keyup', '#macAddress', function(e){
var e = $(this).val();
var r = /([a-f0-9]{2})([a-f0-9]{2})/i,
str = e.replace(/[^a-f0-9]/ig, "");
while (r.test(str)) {
str = str.replace(r, '$1' + ':' + '$2');
}
e = str.slice(0, 17);
$(this).val(e)
$("#macAddress").toggleClass("badMac",!isValidMac(e));
});
input.badMac {
background-color : red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="macAddress">
我建议你使用input
事件,它也将处理用例,当用户使用Ctrl+C
, Ctrl+V
输入MAC地址,也与验证代码应该看起来像这样:
$(function() {
var regexp = /^(([A-Fa-f0-9]{2}[:]){5}[A-Fa-f0-9]{2}?)+$/i;
$("#macAddess").on("input", function(e) {
var tb = $(this);
var val = tb.val().replace(/[^a-f0-9]/ig, "");
var r = /([a-f0-9]{2})([a-f0-9]{2})/i;
while (r.test(val)) {
val = val.replace(r, '$1' + ':' + '$2');
}
val = val.slice(0, 17);
tb.val(val);
tb.toggleClass("badMac", !regexp.test(tb.val()));
});
});
.badMac {
border: 1px solid red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="macAddess" />
您可以使用jQuery的toggleClass()与bool值。在本例中,使用regex测试的返回值。
$('body').on('keyup', '#macAddess', function(e){
var input = $(this).val();
var regexp = /^(([A-Fa-f0-9]{2}[:]){5}[A-Fa-f0-9]{2}[,]?)+$/i;
$("#your-input-id").toggleClass("valid", regexp.test(input));
});
相关文章:
- onkeyup无法动态创建多个文本区域
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- 使用正则表达式评估电子邮件地址时出现性能问题
- 跟踪用户点击Adsense广告的IP地址
- 将谷歌自动完成地址信息放在页面上,而不是表格中
- 使用onkeyup JS事件检查输入的值是否唯一
- 使用API在我的网站Google-Map上显示搜索地址的纬度和经度
- 地址栏中url的缩短
- 需要比特币校验地址和json帮助
- XSS通过地址栏注入
- 动态代码中存在系统应用程序地址错误
- 根据部门用户的选择,接收来自多个电子邮件地址的Wordpress Contactform7查询
- 确定用户按下键(onKeyUp)后的时间量
- 用于更改IP地址的输入框
- 电子邮件地址验证但创建帐户,即使电子邮件地址无效
- 帐单地址与发货地址jQuery相同
- Web 地址虚拟目录会断开外部 JavaScript 链接,因此找不到文件
- 获取docker容器中运行的节点应用程序的IP地址
- 我可以在Dynamics CRM 2016的复合地址字段中添加两个选项字段吗
- 验证MAC地址onkeyup