Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery:反向字符串切片函数?_Javascript_Jquery - Fatal编程技术网

Javascript jQuery:反向字符串切片函数?

Javascript jQuery:反向字符串切片函数?,javascript,jquery,Javascript,Jquery,我有一个简单的代码,它将字符串中的字符替换为“*”,并且只显示字符串的最后4个字符。例如: string = 424242424242 应成为: ********4242 执行此操作的代码如下所示: var str = $('.cc').val(); var trailingCharsIntactCount = 4; str = new Array(str.length - trailingCharsIntactCount + 1).join('*') + str.slice( -trai

我有一个简单的代码,它将字符串中的字符替换为
“*”
,并且只显示字符串的最后4个字符。例如:

string = 424242424242
应成为:

********4242
执行此操作的代码如下所示:

var str = $('.cc').val();

var trailingCharsIntactCount = 4;
str = new Array(str.length - trailingCharsIntactCount + 1).join('*') + str.slice( -trailingCharsIntactCount);

$('.cc').val(str);
现在,当用户关注一个输入字段时,我需要扭转这种情况。 这是一把小提琴:

基本上,我需要显示/隐藏输入的值,就像我在小提琴中演示的那样


有人能告诉我如何才能做到这一点吗?

细线更换是不可能从稀薄的空气中逆转的, 您需要将原始值保存到某个位置。 例如,您可以使用jQuery。 使用
.data('value',str)
存储原始值, 当磁场接收到焦点时, 从
.data('value')
还原它

正如@aaron所指出的, 焦点丢失后,还需要恢复屏蔽值:

$cc
  .focus(function() {
    $(this).val($(this).data('value'));
  })
  .blur(function() {
    str = $(this).val();
    $(this).data('value', str);
    $(this).val(getMaskedValue(str));
  });
他也说得对,你不需要
.data()
, 您可以将实际值存储在变量中。 最好把它藏在一个闭包里。 ()

我还简化了计算屏蔽值的实现,
哪一种性能更好,消除了数组操作。

字符串替换不能从稀薄的空气中逆转, 您需要将原始值保存到某个位置。 例如,您可以使用jQuery。 使用
.data('value',str)
存储原始值, 当磁场接收到焦点时, 从
.data('value')
还原它

正如@aaron所指出的, 焦点丢失后,还需要恢复屏蔽值:

$cc
  .focus(function() {
    $(this).val($(this).data('value'));
  })
  .blur(function() {
    str = $(this).val();
    $(this).data('value', str);
    $(this).val(getMaskedValue(str));
  });
他也说得对,你不需要
.data()
, 您可以将实际值存储在变量中。 最好把它藏在一个闭包里。 ()

我还简化了计算屏蔽值的实现,
哪一个应该执行得更好,消除了数组操作。

将原始值保留在
str
中。这里有一个简洁明了的答案,包括在
模糊上重新隐藏:

var cc = $('.cc');
var str;
var trailingCharsIntactCount = 4;

function getHiddenValue() {
  str = cc.val();
  return new Array(str.length - trailingCharsIntactCount + 1).join('*') + str.slice(-trailingCharsIntactCount);
}

cc.val(getHiddenValue());
cc.focus(function() { cc.val(str); });
cc.blur(function() { cc.val(getHiddenValue()); });

将原始值保留在
str
中。这里有一个简洁明了的答案,包括在
模糊上重新隐藏:

var cc = $('.cc');
var str;
var trailingCharsIntactCount = 4;

function getHiddenValue() {
  str = cc.val();
  return new Array(str.length - trailingCharsIntactCount + 1).join('*') + str.slice(-trailingCharsIntactCount);
}

cc.val(getHiddenValue());
cc.focus(function() { cc.val(str); });
cc.blur(function() { cc.val(getHiddenValue()); });

你真的无法扭转它。您需要将原始值保存在某个位置。您无法真正反转它。您需要将原始值保存到某个位置。