Javascript 使用不可打印的字符(如CTRL、ALT或shift键)镜像输入内容
当按下不可打印的字符时,它将被替换为CTRL=17,例如使用“”[CTRL]”。 下面是一个示例代码Javascript 使用不可打印的字符(如CTRL、ALT或shift键)镜像输入内容,javascript,javascript-events,non-printable,Javascript,Javascript Events,Non Printable,当按下不可打印的字符时,它将被替换为CTRL=17,例如使用“”[CTRL]”。 下面是一个示例代码 $('#textbox1').keyup(function (event) { if (8 != event.keyCode) { if(17==event.keyCode){ $('#textbox1').val($('#textbox1').val()+"[CTRL]") $('#textbox2').val($('#textbox1')
$('#textbox1').keyup(function (event) {
if (8 != event.keyCode) {
if(17==event.keyCode){
$('#textbox1').val($('#textbox1').val()+"[CTRL]")
$('#textbox2').val($('#textbox1').val());
}else{
$('#textbox2').val($('#textbox1').val());
}
} else {
$('#textbox2').val($('#textbox1').val());
}
});
问题是,当用户按backspace时,第二个输入必须反映第一个输入的内容,因此必须像任何其他字符一样立即删除“[CTRL]”。您可以在
键下检查输入字段中的最后一个字符。如果是]
则可以删除从右到最后找到的开口括号的所有内容[
。不幸的是,如果光标位于'[]'内部,则此操作不起作用
$('#textbox1').keydown(function(event) {
if(8 == event.keyCode) {
var element = $(this),
value = element.val(),
lastChar = value.slice(-1);
if(lastChar == ']') {
var lastIndex = value.lastIndexOf('['),
index = value.length - lastIndex;
element.val(value.slice(0, -index) + "]");
}
}
});
您可以在键中检查输入字段中的最后一个字符。如果它是]
您可以删除从右到最后找到的开口括号的所有内容[
。不幸的是,如果光标位于'[]'
内,则此操作不起作用
$('#textbox1').keydown(function(event) {
if(8 == event.keyCode) {
var element = $(this),
value = element.val(),
lastChar = value.slice(-1);
if(lastChar == ']') {
var lastIndex = value.lastIndexOf('['),
index = value.length - lastIndex;
element.val(value.slice(0, -index) + "]");
}
}
});
您可以在键中检查输入字段中的最后一个字符。如果它是]
您可以删除从右到最后找到的开口括号的所有内容[
。不幸的是,如果光标位于'[]'
内,则此操作不起作用
$('#textbox1').keydown(function(event) {
if(8 == event.keyCode) {
var element = $(this),
value = element.val(),
lastChar = value.slice(-1);
if(lastChar == ']') {
var lastIndex = value.lastIndexOf('['),
index = value.length - lastIndex;
element.val(value.slice(0, -index) + "]");
}
}
});
您可以在键中检查输入字段中的最后一个字符。如果它是]
您可以删除从右到最后找到的开口括号的所有内容[
。不幸的是,如果光标位于'[]'
内,则此操作不起作用
$('#textbox1').keydown(function(event) {
if(8 == event.keyCode) {
var element = $(this),
value = element.val(),
lastChar = value.slice(-1);
if(lastChar == ']') {
var lastIndex = value.lastIndexOf('['),
index = value.length - lastIndex;
element.val(value.slice(0, -index) + "]");
}
}
});
您可以使用keyCode
和/或与charCode
结合使用(如果需要)。基本思路是:
创建数组/对象中所有必需键代码的映射
处理saykeydown
的事件并侦听keycode
在地图中查找钥匙代码,如果找到,则显示
防止默认设置(例如,防止退格浏览)
如果在地图中找不到,让角色像往常一样通过
一个非常基本的例子:
演示:
相关js:
编辑:(根据评论)
概念保持不变,只是将值复制到第二个输入:
演示2:
关于删除描述,我无法通过缓存映射中最后插入的描述来完成。不知何故,我一直在用一个变量处理正则表达式。无论如何,一个更简单的解决方案是为带有硬编码映射的keyup添加另一个事件处理程序
感谢@serakfalcon for,我们在这里使用它:
$('#txt1').keydown(function(event) {
if(8 == event.keyCode) {
var el = $(this);
el.val(el.val().replace(/\[(Tab|Enter|Shift|Ctrl|Alt|Break|Caps Lock|Esc|Space|Page (Up|Down)|End|Home|Left|Up|Right|Down|Insert|Delete)\]$/,' '));
$("#txt2").val(el.val());
}
});
您可以使用keyCode
和/或与charCode
结合使用(如果需要)。基本思想是:
创建数组/对象中所有必需键代码的映射
处理saykeydown
的事件并侦听keycode
在地图中查找钥匙代码,如果找到,则显示
防止默认设置(例如,防止退格浏览)
如果在地图中找不到,让角色像往常一样通过
一个非常基本的例子:
演示:
相关js:
编辑:(根据评论)
概念保持不变,只是将值复制到第二个输入:
演示2:
关于删除描述,我无法通过缓存映射中最后插入的描述来完成。不知何故,我一直在用一个变量处理正则表达式。无论如何,一个更简单的解决方案是为带有硬编码映射的keyup添加另一个事件处理程序
感谢@serakfalcon for,我们在这里使用它:
$('#txt1').keydown(function(event) {
if(8 == event.keyCode) {
var el = $(this);
el.val(el.val().replace(/\[(Tab|Enter|Shift|Ctrl|Alt|Break|Caps Lock|Esc|Space|Page (Up|Down)|End|Home|Left|Up|Right|Down|Insert|Delete)\]$/,' '));
$("#txt2").val(el.val());
}
});
您可以使用keyCode
和/或与charCode
结合使用(如果需要)。基本思想是:
创建数组/对象中所有必需键代码的映射
处理saykeydown
的事件并侦听keycode
在地图中查找钥匙代码,如果找到,则显示
防止默认设置(例如,防止退格浏览)
如果在地图中找不到,让角色像往常一样通过
一个非常基本的例子:
演示:
相关js:
编辑:(根据评论)
概念保持不变,只是将值复制到第二个输入:
演示2:
关于删除描述,我无法通过缓存映射中最后插入的描述来完成。不知何故,我一直在用一个变量处理正则表达式。无论如何,一个更简单的解决方案是为带有硬编码映射的keyup添加另一个事件处理程序
感谢@serakfalcon for,我们在这里使用它:
$('#txt1').keydown(function(event) {
if(8 == event.keyCode) {
var el = $(this);
el.val(el.val().replace(/\[(Tab|Enter|Shift|Ctrl|Alt|Break|Caps Lock|Esc|Space|Page (Up|Down)|End|Home|Left|Up|Right|Down|Insert|Delete)\]$/,' '));
$("#txt2").val(el.val());
}
});
您可以使用keyCode
和/或与charCode
结合使用(如果需要)。基本思想是:
创建数组/对象中所有必需键代码的映射
处理saykeydown
的事件并侦听keycode
在地图中查找钥匙代码,如果找到,则显示
防止默认设置(例如,防止退格浏览)
如果在地图中找不到,让角色像往常一样通过
一个非常基本的例子:
演示:
相关js:
编辑:(根据评论)
概念保持不变,只是将值复制到第二个输入:
演示2:
关于删除描述,我无法通过缓存映射中最后插入的描述来完成。不知何故,我一直在用一个变量处理正则表达式。无论如何,一个更简单的解决方案是为带有硬编码映射的keyup添加另一个事件处理程序
感谢@serakfalcon for,我们在这里使用它:
$('#txt1').keydown(function(event) {
if(8 == event.keyCode) {
var el = $(this);
el.val(el.val().replace(/\[(Tab|Enter|Shift|Ctrl|Alt|Break|Caps Lock|Esc|Space|Page (Up|Down)|End|Home|Left|Up|Right|Down|Insert|Delete)\]$/,' '));
$("#txt2").val(el.val());
}
});
您始终可以使用正则表达式
$('#textbox1').keydown(function(event) {
if(8 == event.keyCode) {
var el = $(this);
el.val(el.val().replace(/\[(CTRL|ALT|SHIFT)\]$/,' '));
}
});
编辑:您可以始终使用正则表达式
$('#textbox1').keydown(function(event) {
if(8 == event.keyCode) {
var el = $(this);
el.val(el.val().replace(/\[(CTRL|ALT|SHIFT)\]$/,' '));
}
});
编辑:您可以始终使用正则表达式
$('#textbox1').keydown(function(event) {
if(8 == event.keyCode) {
var el = $(this);
el.val(el.val().replace(/\[(CTRL|ALT|SHIFT)\]$/,' '));
}
});
编辑:您可以始终使用正则表达式
$('#textbox1').keydown(function(event) {
if(8 == event.keyCode) {
var el = $(this);
el.val(el.val().replace(/\[(CTRL|ALT|SHIFT)\]$/,' '));
}
});
编辑:你不读吗