如何在jquery中使用keyup事件制作破折号(“-”)?

连姆尼森

我正在尝试使用 jquery 中的 keyup 事件创建一个像“12-1234-12-12-12345-123”这样的帐号

我试过这个stackoverflow 链接它适用于每两个字符。但我的情况有点不同。我的情况不是每 2 个字符。我必须像这样做一个破折号(“-”)12-1234-12-12-12345-123

我在下面的代码中尝试过

$('#ContentPlaceHolder1_txtAccount1').keyup(function () {
    console.log("key press working");
    var foo = $(this).val().split("-").join(""); // remove hyphens

    var accSplit = $(this).val().split("-");
    if (accSplit.length == 0) {
        if (foo.length > 0) {
            foo = foo.match(new RegExp('.{1,2}', 'g')).join("-");
        }
    }
    if (accSplit.length == 1) {
        if (foo.length > 0) {
            foo = foo.match(new RegExp('.{1,4}', 'g')).join("-");
        }
    }
    $(this).val(foo);
});
曲折的

不确定这是否是最好的方法,但它确实创建了您正在寻找的字符串。考虑以下:

$(function() {

  function splitVal(v, a) {
    var str = [];
    if (a == undefined) {
      a = [2, 4, 2, 2, 5, 3];
    }
    var val = "" + v.split("-").join("");
    var vl = val.length;
    var i = a[0], j = i + a[1], k = j + a[2], l = k + a[3], m = l + a[4], n = m + a[5];
    console.log(val, vl);
    switch (true) {
      case vl <= i:
        str[0] = val;
        break;
      case vl <= j:
        str.push(val.slice(0, i));
        str.push(val.slice(i));
        break;
      case vl <= k:
        str.push(val.slice(0, i));
        str.push(val.slice(i, j));
        str.push(val.slice(j));
        break;
      case vl <= l:
        str.push(val.slice(0, i));
        str.push(val.slice(i, j));
        str.push(val.slice(j, k));
        str.push(val.slice(k));
        break;
      case vl <= m:
        str.push(val.slice(0, i));
        str.push(val.slice(i, j));
        str.push(val.slice(j, k));
        str.push(val.slice(k, l));
        str.push(val.slice(l));
        break;
      case vl <= n:
        str.push(val.slice(0, i));
        str.push(val.slice(i, j));
        str.push(val.slice(j, k));
        str.push(val.slice(k, l));
        str.push(val.slice(l, m));
        str.push(val.slice(m));
        break;
      case vl > m:
        str.push(val.slice(0, i));
        str.push(val.slice(i, j));
        str.push(val.slice(j, k));
        str.push(val.slice(k, l));
        str.push(val.slice(l, m));
        str.push(val.slice(m, n));
        break;
    }
    console.log(str)
    return str.join("-");
  }
  $('#ContentPlaceHolder1_txtAccount1').keyup(function() {
    $(this).val(splitVal($(this).val()));
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="ContentPlaceHolder1_txtAccount1" style="width: 200px;">

使用switch()我们可以根据字符串的不同长度有条件地创建一个数组。我们将其分解为数组的不同部分。填充数组后,我们可以使用.join()在需要的地方插入“-”字符串。

希望有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在shell中重复破折号(连字符)

如何在Jupyter Notebook中使用破折号?

在雨果中使用局部时的破折号

为什么条件Go模板中使用破折号

如何制作可绘制线条的圆形破折号或圆点

如何在ASP.NET MVC中的HTML-5 data- *属性中使用破折号

在jQuery语法错误属性名称中使用CSS包括破折号

jQuery事件名称空间可以包含破折号吗?

如何在snakeyaml中使用破折号解析字段名称?

如何在一个命令行中使用多个双破折号(-)

如何在没有输入的情况下使用破折号回调

如何在javascript中使用正则表达式提取破折号之间的字符串?

是否可以在dict键中使用破折号?

如何在bash脚本中多次使用带有“-”(破折号)的标准输入?

如何在Powershell中使用破折号参数?

如果在javascript .replace中使用,如何在RegEx中定位破折号或连字符?

如何在Windows 7/8中键入破折号和破折号?

在mysql表名中使用(-)破折号

如何在翻新中使用破折号/连字符处理JSON密钥?

如何在Ubuntu 14.04上输入破折号

如何写破折号和破折号?

如何在Angular.js的ng-class中使用包含破折号的类?

如何在文件名的开头使用破折号“-”打开多个文件?

在printf中使用破折号

如何在网址中使用破折号替换最后的“ /”

如何在 Xfce 下进行类似破折号的搜索?

如何在没有 - 或 --(破折号)的情况下使用可选参数

在 Power bi 中使用 DAX 如何向电话号码文本添加破折号

如何在 .NET 6 中使用带有破折号 (-) 的路由器参数?