<textarea>用javascript </textarea>按下了什么键

时间:2009-11-06 13:37:26

标签: javascript javascript-events

我想问一下如何确定在textarea中按下了哪个键.... 需要编写一些javascript代码..用户在textarea中输入,我需要在写作的同时编写它,以便keydownkeypress事件处理此功能,还需要如果用户在textarea中键入一个“看过”的单词(或者他所写的单词包含“看过的”单词/单词),则更改文本颜色。任何想法如何处理它?<​​/ p>

到现在为止,文本出现在<div>中,但是我有一个问题..无法检查文本是否在“已观看”... document.getElementById('IDOFTHETEXTAREATAG');keypress并不真正有用,因为我收回了textarea .....

中的全文

那我怎么做呢?有任何想法吗 ??? “(Pref.in Mozilla FireFox)

5 个答案:

答案 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>