按下特定键后如何捕获打字?
How to capture typing after a specific key is pressed?
我需要在输入文本框之前捕获输入内容并根据需要进行编辑。我写在 javascript 和 jQuery.
我有一个文本框,我想检测何时键入“#”字符 - 在将其写入文本框之前 - 然后捕获之后(也在写入之前)的所有键入,直到我得到另一个“ #”。
我在网上看到很多关于如何使用 "keypress" 来检测何时键入特定键的示例,但我不知道如何捕获在它之前的 2 个特殊键之间键入的所有文本已写入文本框。
我可以就此主题寻求任何帮助!
使用preventdefault()
防止密钥被写入。
检查你是否是 "in between" 哈希,如果是这样就记录键(将它们写入字符串)
当你是 'leaving' 散列包装时,对字符串做一些事情。
查看下面的 JSFiddle 以获得更详细的示例!
var inhash=false;
var tmpstring="";
$("#editme").on("keypress", function(e){
if(e.which==35){ // 35 is the keycode value for the hash symbol "#"
e.preventDefault(); //don't send the key to the textarea
inhash=!inhash; // toggle the state of our "inhash" variable
if(inhash==false){
alert(tmpstring); // if we just left a hash sequence, do something with it
tmpstring=""; // don't forget to empty our record string
}
}else if(inhash==true){
e.preventDefault();
tmpstring+=String.fromCharCode(e.which); // when we're "in between" hash symbols, write the key to our recording variable
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id='editme'></textarea>
在第一种情况下,所有字符的输入都被阻止,然后在文本变量中您可以编辑,然后为输入字段分配一个值
$('#typehere').on("keypress",function(e){
e.preventDefault();
if(e.which == "#".charCodeAt(0)){
if(listening){
listening= false;
//do what you want with the text
alert("no more listening: "+text);
}else{
listening = true;
alert("listening");
}
return true;
}
if(listening)
text+= String.fromCharCode(e.which);
});
尝试 fiddle https://jsfiddle.net/42fns28a/
在第二种情况下,您可以在输入字段中键入内容,直到您的特殊字符被按下,您可以键入并编辑您想要的内容,直到第二次按下特殊字符
$('#typehere').on("keypress",function(e){
if(e.which == "#".charCodeAt(0)){
e.preventDefault();
if(listening){
listening= false;
//do what you want with the text
$(this).val($(this).val()+text);
alert("no more listening: "+text);
}else{
listening = true;
alert("listening");
}
return true;
}
if(listening){
e.preventDefault();
text+= String.fromCharCode(e.which);
}
});
$( "#target" ).keypress(function() {
console.log( "Handler for .keypress() called." );
});
link 这里:https://api.jquery.com/keypress/
归功于 admd
$( "#target" ).change(function() {
console.log("test input changed");
});
link 这里:https://api.jquery.com/change/
我需要在输入文本框之前捕获输入内容并根据需要进行编辑。我写在 javascript 和 jQuery.
我有一个文本框,我想检测何时键入“#”字符 - 在将其写入文本框之前 - 然后捕获之后(也在写入之前)的所有键入,直到我得到另一个“ #”。
我在网上看到很多关于如何使用 "keypress" 来检测何时键入特定键的示例,但我不知道如何捕获在它之前的 2 个特殊键之间键入的所有文本已写入文本框。
我可以就此主题寻求任何帮助!
使用preventdefault()
防止密钥被写入。
检查你是否是 "in between" 哈希,如果是这样就记录键(将它们写入字符串)
当你是 'leaving' 散列包装时,对字符串做一些事情。
查看下面的 JSFiddle 以获得更详细的示例!
var inhash=false;
var tmpstring="";
$("#editme").on("keypress", function(e){
if(e.which==35){ // 35 is the keycode value for the hash symbol "#"
e.preventDefault(); //don't send the key to the textarea
inhash=!inhash; // toggle the state of our "inhash" variable
if(inhash==false){
alert(tmpstring); // if we just left a hash sequence, do something with it
tmpstring=""; // don't forget to empty our record string
}
}else if(inhash==true){
e.preventDefault();
tmpstring+=String.fromCharCode(e.which); // when we're "in between" hash symbols, write the key to our recording variable
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id='editme'></textarea>
在第一种情况下,所有字符的输入都被阻止,然后在文本变量中您可以编辑,然后为输入字段分配一个值
$('#typehere').on("keypress",function(e){
e.preventDefault();
if(e.which == "#".charCodeAt(0)){
if(listening){
listening= false;
//do what you want with the text
alert("no more listening: "+text);
}else{
listening = true;
alert("listening");
}
return true;
}
if(listening)
text+= String.fromCharCode(e.which);
});
尝试 fiddle https://jsfiddle.net/42fns28a/
在第二种情况下,您可以在输入字段中键入内容,直到您的特殊字符被按下,您可以键入并编辑您想要的内容,直到第二次按下特殊字符
$('#typehere').on("keypress",function(e){
if(e.which == "#".charCodeAt(0)){
e.preventDefault();
if(listening){
listening= false;
//do what you want with the text
$(this).val($(this).val()+text);
alert("no more listening: "+text);
}else{
listening = true;
alert("listening");
}
return true;
}
if(listening){
e.preventDefault();
text+= String.fromCharCode(e.which);
}
});
$( "#target" ).keypress(function() {
console.log( "Handler for .keypress() called." );
});
link 这里:https://api.jquery.com/keypress/ 归功于 admd
$( "#target" ).change(function() {
console.log("test input changed");
});
link 这里:https://api.jquery.com/change/