2009-11-06 76 views
-3

按下了哪个键,我想请人我怎么能确定按下了哪个键在textarea .... 需要编写一些JavaScript代码..用户键入一个textarea,我需要写一段时间,他写这样的事件,​​, keypress事件处理这个功能,如果用户输入一个“看过”的单词(或他所写的单词包含“看过”的单词/单词),还需要更改文本颜色,在textarea ..任何想法如何我可以处理它?<textarea>用JavaScript

到现在为止所做的文字出现在<div>,但这个我有一个问题..不能检查,如果文本是在“观看” ......上keypressdocument.getElementById('IDOFTHETEXTAREATAG');是不是真的有用,因为我收回了textarea的全文.....

那么我该怎么做呢?有任何想法吗 ??? “

+0

为什么不显示你尝试过什么。 – 2009-11-06 13:40:15

+1

你应该尝试阅读你自己的问题。我甚至不认为你*能够理解它。 – 2009-11-06 16:57:57

回答

1

好吧,如果你使用jQuery,你可以这样做给你的textarea的ID为‘TA’(在Mozilla Firefox县):

$('#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 
    } 
}; 
0

我建议你使用“的onkeyup 。'事件

$(element).keyup(function(evt) { 
    var keyPressed = evt.keyCode; 
    //... 
}); 
0

我不知道你的问题是什么,问题/问题描述过于模糊,但我认为你弄得什么都key*事件做这里有一个清晰的概述:

  • onkeydown将在按下键时触发,但是在字符附加到该值之前。
  • onkeypress将在按下按键时触发,但在字符附加到该值之后。
  • onkeyup将在键释放时触发,并且总是在字符附加到该值后触发。

也许你的实际问题是通过textarea的值而不是keyevent访问字符。

希望这会有所帮助。

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; 

这个脚本是在头标记。我在所有textarea标签中捕捉到了这一点。修改它为您的目的。

+0

也许你应该使用少一点的三元运算符(或者他们在javascript中调用的任何函数)它们使代码非常难读。 – 2009-11-07 09:59:21

+0

你是怀特...这段代码是旧的,只写了一次:)复制并粘贴从那以后 - 如果它没有损坏我不修复它:P否则我不这样做... – Trick 2009-11-07 13:09:46

-1

2 textareas。

在第一个文本区域中,我需要编写单词或字符什么你想要在输入文本“看”。

在第二textarea的我需要输入文本,所以当我键入文本,textarea的下需要写的是在textarea的(实时),并强调整个单词,如果包含的话观看或字符。

例如:

关注:文本更衣室p

文本:者Lockerroom(需要,因为它包含了更衣室字的HIGHlite整个单词)或苹果(包含P)

如果一个单词不是以看过的单词/字母开头来填满整个单词,我可以做些什么?

的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>