我正在尝试使用 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] 删除。
我来说两句