Javascript 在每两位数字后输入mac地址时自动插入冒号

Javascript 在每两位数字后输入mac地址时自动插入冒号,javascript,jquery,Javascript,Jquery,我想使用Java脚本或jquery在html输入框中每两位数字后自动插入冒号 我按 00 然后自动插入冒号 00: 继续,最多继续5次,就像 00:00:00:00:00:00也许你可以参考我的例子 $(“#ip#U地址”).live(“键控”,功能(事件){ var limitField=$(this.val().trim().length; var limit=“14” 如果(event.keyCode!=8){ if(limitField==2){ var fax_value=$(th

我想使用Java脚本或jquery在html输入框中每两位数字后自动插入冒号

我按

00 然后自动插入冒号 00:

继续,最多继续5次,就像


00:00:00:00:00:00

也许你可以参考我的例子


$(“#ip#U地址”).live(“键控”,功能(事件){
var limitField=$(this.val().trim().length;
var limit=“14”
如果(event.keyCode!=8){
if(limitField==2){
var fax_value=$(this.val().trim().concat(':');
$(“ip地址”).val(传真值);
}else if(limitField==5){
var fax_value=$(this.val().trim().concat(':');
$(“ip地址”).val(传真值);
}else if(limitField==8){
var fax_value=$(this.val().trim().concat(':');
$(“ip地址”).val(传真值);
}else if(limitField==11){
var fax_value=$(this.val().trim().concat(':');
$(“ip地址”).val(传真值);
}
}
如果(限制字段>限制){
$(“#ip_地址”).val($(this.val().trim().substring(0,limit));
}
});
试试这个

<div id="dialog-message" title="Enter MAC address">
    <input id="macAddress" type="text" maxlength="17"></input>
</div>

var macAddress = $("#macAddress");

$(function () {
    $("#dialog-message").dialog({
        modal: true,
        buttons: {
            Ok: function () {
                $(this).dialog("close");
                alert("MAc address entered: " + macAddress.val());
            }
        }
    });
});

function formatMAC(e) {
    var r = /([a-f0-9]{2})([a-f0-9]{2})/i,
        str = e.target.value.replace(/[^a-f0-9]/ig, "");

    while (r.test(str)) {
        str = str.replace(r, '$1' + ':' + '$2');
    }

    e.target.value = str.slice(0, 17);
};

macAddress.on("keyup", formatMAC);

var macAddress=$(“#macAddress”);
$(函数(){
$(“#对话框消息”).dialog({
莫代尔:是的,
按钮:{
Ok:函数(){
$(此).dialog(“关闭”);
警报(“输入的MAc地址:+macAddress.val());
}
}
});
});
函数格式MAC(e){
var r=/([a-f0-9]{2})([a-f0-9]{2})/i,
str=e.target.value.replace(/[^a-f0-9]/ig,”);
while(r.test(str)){
str=str.replace(r,'$1'+':'+'$2');
}
e、 target.value=str.slice(0,17);
};
macAddress.on(“keyup”,formatMAC);

在纯javascript中,没有jquery的钟声和口哨,这里也是一样的

<input id="macAddress" type="text" maxlength="17"></input>

var macAddress = document.getElementById("macAddress");

function formatMAC(e) {
    var r = /([a-f0-9]{2})([a-f0-9]{2})/i,
        str = e.target.value.replace(/[^a-f0-9]/ig, "");

    while (r.test(str)) {
        str = str.replace(r, '$1' + ':' + '$2');
    }

    e.target.value = str.slice(0, 17);
};

macAddress.addEventListener("keyup", formatMAC, false);

var macAddress=document.getElementById(“macAddress”);
函数格式MAC(e){
var r=/([a-f0-9]{2})([a-f0-9]{2})/i,
str=e.target.value.replace(/[^a-f0-9]/ig,”);
while(r.test(str)){
str=str.replace(r,'$1'+':'+'$2');
}
e、 target.value=str.slice(0,17);
};
macAddress.addEventListener(“keyup”,formatMAC,false);

上,您可以使用模数来执行此操作

你可以试试这样的

例如:

试试这个:

var length = 1;
$("#input").focusin(function (evt) {

    $(this).keypress(function () {
        var content = $(this).val();
        var content1 = content.replace(/\:/g, '');
        length = content1.length;
        if(((length % 2) == 0) && length < 10 && length > 1){
            $('#input').val($('#input').val() + ':');
        }    
    });    
});
var长度=1;
$(“#输入”).focusin(函数(evt){
$(此).keypress(函数(){
var content=$(this.val();
var content1=content.replace(/\:/g',);
长度=内容1.5米长;
如果((长度%2)=0)且长度<10且长度>1){
$('输入').val($('输入').val()+':');
}    
});    
});

我正在使用它并为我工作:

<input type="text" id="macaddress" onkeyup="doInsert(this)" maxlength="17"/>

<script type="text/javascript">
function doInsert(ctl)
{
    vInit = ctl.value;
    ctl.value = ctl.value.replace(/[^a-f0-9:]/ig, "");
    //ctl.value = ctl.value.replace(/:\s*$/, "");
    vCurrent = ctl.value;
    if(vInit != vCurrent)
        return false;   

    var v = ctl.value;
    var l = v.length;
    var lMax = 17;

    if(l >= lMax)
    {
        return false;
    }

    if(l >= 2 && l < lMax)
    {
        var v1 = v;     
        /* Removing all ':' to calculate get actaul text */
        while(!(v1.indexOf(":") < 0)) { // Better use RegEx
            v1 = v1.replace(":", "");           console.log('v1:'+v1);
        }

        /* Insert ':' after ever 2 chars */     
        var arrv1 = v1.match(/.{1,2}/g); // ["ab", "dc","a"]        
        ctl.value = arrv1.join(":");
    }
}
</script>

函数doInsert(ctl)
{
vInit=控制值;
ctl.value=ctl.value.replace(/[^a-f0-9://ig,”);
//ctl.value=ctl.value.replace(/:\s*$/,“”);
vCurrent=控制值;
if(vInit!=V电流)
返回false;
var v=控制值;
var l=v.长度;
var lMax=17;
如果(l>=lMax)
{
返回false;
}
如果(l>=2&&l
这是我的版本:

$('#MACADDRESS').keyup(函数(e){
var r=/([a-f0-9]{2})/i;
var str=e.target.value.replace(/[^a-f0-9://ig,”);
如果(e.keyCode!=8&&r.test(str.slice(-2))){
str=str.concat(“:”)
}
e、 target.value=str.slice(0,17);
});
它还增加了“:”每两个字符

IngD改进了这一点。 答案有很多缺陷

  • 没有意义的变量名
  • 乱码
  • 过时的方法
  • 这里有一个

    这将限制最大字符数为17个,并删除超过限制的所有字符。
    它还会在每一个字符后添加冒号:

    如果有人在这里找到了答案,我发现上面的答案有很多问题,所以我在这里添加了我自己的问题。 我的标准如下:

    • 能够发送垃圾邮件(快速键入)字母和数字,并且仍然在正确的位置插入冒号
    • 无幻影字符(字母拼接时会显示一些答案,然后消失)
    • 能够在任何位置退格(某些答案,退格会破坏格式)
    • 降低复杂性
    • 没有正则表达式
    • 不超过17个字符
    最初我是用Vue编写的,但这里我将提供一个jquery版本

    $(“#mac输入”)。打开(“按键”,功能(事件){
    常量退格键=8
    const COLON_KEY=186
    常量并置=[2,5,8,11,14]
    const_newValue=$(this.val().trim())
    const\u currentPosition=\u newValue.length
    if(event.keyCode==冒号\u键){
    event.preventDefault()
    }
    if(event.keyCode!==退格键){
    if(_colonPositions.some(position=>position==_currentPosition)){
    $(“#mac输入”).val(_newValue.concat(':'))
    }
    }
    })
    
    
    Google“jquery mask plugin”,你会发现很多插件都可以做到这一点。谢谢,但它不符合我的要求……你尝试了什么?Stackoverflow不是“嘿,帮我做这个”而是“嘿,我有麻烦了,我做错了什么?”为什么要多次定义
    fax\u值?这是一个非常坏的习惯,代码看起来很难看。也可以考虑使用<代码>开关>代码>这是非常有用的,并且避免在代码中有大量的<代码>。更干净。看我的
    
    <input type="text" id="macaddress" onkeyup="doInsert(this)" maxlength="17"/>
    
    <script type="text/javascript">
    function doInsert(ctl)
    {
        vInit = ctl.value;
        ctl.value = ctl.value.replace(/[^a-f0-9:]/ig, "");
        //ctl.value = ctl.value.replace(/:\s*$/, "");
        vCurrent = ctl.value;
        if(vInit != vCurrent)
            return false;   
    
        var v = ctl.value;
        var l = v.length;
        var lMax = 17;
    
        if(l >= lMax)
        {
            return false;
        }
    
        if(l >= 2 && l < lMax)
        {
            var v1 = v;     
            /* Removing all ':' to calculate get actaul text */
            while(!(v1.indexOf(":") < 0)) { // Better use RegEx
                v1 = v1.replace(":", "");           console.log('v1:'+v1);
            }
    
            /* Insert ':' after ever 2 chars */     
            var arrv1 = v1.match(/.{1,2}/g); // ["ab", "dc","a"]        
            ctl.value = arrv1.join(":");
        }
    }
    </script>
    
    $("#mac").on("keyup", function(event) {
    
      var limitField = $(this).val().trim().length;
      var limit = "17";
    
      if (event.keyCode != 8) {
          var mac_value = $(this).val().trim().concat(':');
          switch(limitField) {
              case 2:
              case 5:
              case 8:
              case 11:
              case 14:
                  $("#mac").val(mac_value);
              break;
          }
       }
       if (limitField > limit) {
           $("#mac").val($(this).val().trim().substring(0, limit));
       }
    });