如何将每次按键时的输入屏蔽为 html 输入字段中预定义字符串中的字符?
How do I mask the input with every key press as a character from a predefined string in an html input field?
我的动机是让观众相信某个字符串正在作为输入输入(通过在输入字段中逐字符显示,每次按键),而不管实际输入是什么is.The 表示实际输入必须保持不变并可供进一步使用。我试着修改密码字段以显示我想要的字符序列而不是点或星号,但显然这是不可行的。我要实现的目标与网站 www.peteranswers.com
上的 "petition" 字段完全一样
是这样的吗?
我能够使用事件侦听器和事件键相当轻松地完成此操作。假设存在id为"my_input"的输入框,我们可以做如下操作:
let string = 'Hello, World! ' // The "fake" input string
string = string.split(""); // Split string into array for easy indexing
let user_input = '';
let my_input = document.getElementById('my_input'); // Input field
my_input.onkeypress = function (e) {
e.preventDefault();
// Get the key pressed in string form so we can play with it
let keypress_string = String.fromCharCode(e.keyCode);
if (/[a-zA-Z0-9-_ ]/.test(keypress_string)) { // If alphanumeric
this.value += string[user_input.length % string.length];
user_input += keypress_string;
}
}
my_input.onkeydown = function (e) {
if (e.keyCode === 8) { // If backspace
user_input = user_input.slice(0, -1) // Chop off the last character in the string
}
}
在这种情况下,用户输入的实际字符串将存储在变量中user_input
我的动机是让观众相信某个字符串正在作为输入输入(通过在输入字段中逐字符显示,每次按键),而不管实际输入是什么is.The 表示实际输入必须保持不变并可供进一步使用。我试着修改密码字段以显示我想要的字符序列而不是点或星号,但显然这是不可行的。我要实现的目标与网站 www.peteranswers.com
上的 "petition" 字段完全一样是这样的吗?
我能够使用事件侦听器和事件键相当轻松地完成此操作。假设存在id为"my_input"的输入框,我们可以做如下操作:
let string = 'Hello, World! ' // The "fake" input string
string = string.split(""); // Split string into array for easy indexing
let user_input = '';
let my_input = document.getElementById('my_input'); // Input field
my_input.onkeypress = function (e) {
e.preventDefault();
// Get the key pressed in string form so we can play with it
let keypress_string = String.fromCharCode(e.keyCode);
if (/[a-zA-Z0-9-_ ]/.test(keypress_string)) { // If alphanumeric
this.value += string[user_input.length % string.length];
user_input += keypress_string;
}
}
my_input.onkeydown = function (e) {
if (e.keyCode === 8) { // If backspace
user_input = user_input.slice(0, -1) // Chop off the last character in the string
}
}
在这种情况下,用户输入的实际字符串将存储在变量中user_input