【发布时间】:2015-05-14 11:57:57
【问题描述】:
我想编写一个要求,我需要在 jsp 的文本字段中屏蔽几个字符。
例如:我的文本字段将接受 11 位数字作为输入。 说12345678911
我需要在客户端显示 *****678911 但需要在服务器端传递 12345678911。
我知道我可以使用隐藏字段来存储未屏蔽值并在 TextField 中显示屏蔽值。
但是用户可以在全部输入后使用箭头键或鼠标编辑第二个字符,所以这里逻辑失败。
下面是我的代码:
<SCRIPT LANGUAGE="Javascript">
var a = document.getElementById("hiddenText").value;
var val = document.getElementById("repeat").value;
function mask(str,textbox){
var mask;
switch(str.length){
case 1:
this.val = str;
mask = "*";
break;
case 2:
val = val + str.charAt(1);
mask = "**";
break;
case 3:
val = val + str.charAt(2);
mask = "***";
break;
case 4:
val = val + str.charAt(3);
mask = "****";
break;
case 5:
val = val + str.charAt(4);
mask = "*****";
break;
case 6:
val = val + str.charAt(5);
mask = "*****" + val.substring(5,6);
break;
case 7:
val = val + str.charAt(6);
mask = "*****" + val.substring(5,7);
break;
case 8:
val = val + str.charAt(7);
mask = "*****"+ val.substring(5,8);
break;
case 9:
val = val + str.charAt(8);
mask = "*****"+ val.substring(5,9);
break;
case 10:
val = val + str.charAt(9);
mask = "*****"+ val.substring(5,10);
break;
case 11:
val = val + str.charAt(10);
mask = "*****"+ val.substring(5,11);
break;
default:
break;
}
textbox.value = mask;
document.getElementById("repeat").value = val
if (document.getElementById("repeat").value.length > 11){
var h = document.getElementById("repeat").value;
h = h.substring(0,11);
document.getElementById("repeat").value = h;
}
}
</SCRIPT>
如果用户一次性输入值,这可以正常工作,但如果他通过使用箭头键或鼠标移动光标来修改输入的值,则失败。
非常感谢您的帮助!
谢谢!
【问题讨论】:
-
感谢您的及时回复。我不太清楚这个解决方案。但是这个 pheudo 代码会屏蔽文本字段中的所有字符。但是,我希望在我的文本字段中仅屏蔽 5 个字符。
标签: java javascript jsp jakarta-ee servlets