微笑的伤痕 · 用于多向目标检测的水平边界框上的滑动顶点,I ...· 5 月前 · |
有情有义的汤圆 · Get exclusive jobs on ...· 1 年前 · |
文质彬彬的熊猫 · javascript中html字符串转化为j ...· 1 年前 · |
我正在尝试验证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')
函数中保留所有内容。
如何测试它是否无效,然后设置类?
发布于 2016-09-21 21:33:39
您可以使用正则表达式来测试它,该正则表达式检查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!
});
发布于 2016-09-21 21:39:53
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">
发布于 2016-09-21 21:42:08
我建议你使用
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);