我想问一下如何确定在textarea
中按下了哪个键....
需要编写一些javascript代码..用户在textarea
中输入,我需要在写作的同时编写它,以便keydown
,keypress
事件处理此功能,还需要如果用户在textarea
中键入一个“看过”的单词(或者他所写的单词包含“看过的”单词/单词),则更改文本颜色。任何想法如何处理它?</ p>
到现在为止,文本出现在<div>
中,但是我有一个问题..无法检查文本是否在“已观看”... document.getElementById('IDOFTHETEXTAREATAG');
上keypress
并不真正有用,因为我收回了textarea
.....
那我怎么做呢?有任何想法吗 ??? “(Pref.in Mozilla FireFox)
答案 0 :(得分:1)
好吧,如果你使用jQuery,你可以这样做,因为你的textarea的id是'ta':
$('#ta').keypress(function (evt) {
var $myTextArea = $(this); // encapsulates the textarea in the jQuery object
var fullText = $myTextArea.val(); // here is the full text of the textarea
if (/* do your matching on the full text here */) {
$myTextArea.css('color', 'red'); // changes the textarea font color to red
}
};
答案 1 :(得分:0)
我建议您使用'onkeyup'事件。
$( element ).keyup( function( evt ) {
var keyPressed = evt.keyCode;
//...
});
答案 2 :(得分:0)
我不确定你的问题是什么,问题/问题描述得太模糊了。但我认为你混淆了所有key*
事件的作用。这是一个清晰的概述:
onkeydown
,但在将字符附加到值之前将会触发。onkeypress
,但在将该字符附加到该值后将被触发。onkeyup
,并且该字符附加到值之后始终会触发。也许你的实际问题是通过textarea的值而不是keyevent来访问字符。
希望这有帮助。
答案 3 :(得分:0)
我这样做(普通JS,没有JQuery):
function keyDown(e) {
var evt=(e)?e:(window.event)?window.event:null;
if(evt){
if (window.event.srcElement.tagName != 'TEXTAREA') {
var key=(evt.charCode)?evt.charCode: ((evt.keyCode)?evt.keyCode:((evt.which)?evt.which:0));
}
}
}
document.onkeydown=keyDown;
此脚本位于head标记中。我在所有textarea标签中捕获这个。为您的目的修改它。
答案 4 :(得分:-1)
2 textareas。
在第一个textarea中,我需要在输入文本中写下你想要“观察”的单词或字符。
在第二个textarea我需要输入文本,所以当我输入文本时,在textarea下需要写textarea中的内容(实时)并突出显示整个单词,如果包含被监视的单词或字符。
例如:
观看:文本储物柜p
text: lockerroom (需要高亮显示整个单词,因为它包含更衣词)或 apple (包含p)
如果一个单词没有以看到的单词/ char开头来表达整个单词,我能做什么?
JavaScript的:
var text;
var value;
var myArray;
var found = new Boolean(false);
function getWatchedWords()
{
myArray = new Array();
text = document.getElementById('watched');
value = text.value;
myArray = value.split(" ");
for (var i = 0;i < myArray.length; i++)
{
document.getElementById('writewatched').innerHTML += myArray[i] + "<newline>";
}
}
function checkTypeing()
{
var text2 = document.getElementById('typeing');
var value2 = text2.value;
var last = new Array();
last = value2.split(" ");
if (last[last.length-1] == "")
{
if(found)
{
document.getElementById('writetyped').innerHTML += "</span>";
document.getElementById('writetyped').innerHTML += " ";
}
else
document.getElementById('writetyped').innerHTML += " ";
}
else
check(last[last.length-1]);
}
function check(string)
{
for (var i = 0; i < myArray.length; i++)
{
var occur = string.match(myArray[i]);
if(occur != null && occur.length > 0)
{
if (!found)
{
found = true;
document.getElementById('writetyped').innerHTML += "<span style='color: blue;'>";
}
else
{
found = true;
}
}
else
{
}
}
if(found)
{
document.getElementById('writetyped').innerHTML += string;
}
else
{
document.getElementById('writetyped').innerHTML += string;
}
}
HTML:
<html>
<head>
<title>TextEditor</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script src='script.js' type='text/javascript'></script>
</head>
<body>
<div>
<p>Watched words:</p>
<textarea id="watched" onblur=getWatchedWords();>
</textarea>
</div>
<div id="writewatched">
</div>
<div>
<p>Text:</p>
<textarea id="typeing" onkeyup=checkTypeing();>
</textarea>
</div>
<div id="writetyped">
</div>
</body>
</html>