我无法弄清楚如何在textarea元素上触发keydown事件,如想象我有两个textarea元素,当我在第一种类型的东西,我想第二个框,显示打字一样好,但一定我之所以有通过事件来做到这一点。 这就是我想和它不工作:
<script language="javascript" type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
<textarea id='first'></textarea>
<textarea id='second'></textarea>
<script>
jQuery("#first").keydown(function(event)
{
var keydown = jQuery.Event("keydown")
keydown.keyCode = event.keyCode
keydown.which = event.which
jQuery("#second").trigger(keydown)
})
</script>
任何想法我怎么能做到这一点?
被发送的情况下,浏览器只是没有反应,它(即,将字符的文本域)
并非所有的浏览器(我知道的),让你分派事件,不只是触发它们。 但是,即使这样做是远远不够完善
// Gecko only
$("#first").keypress(function(event)
{
var evt = document.createEvent('KeyEvents');
evt.initKeyEvent(
event.type
, event.bubbles
, event.cancelable
, event.view
, event.ctrlKey
, event.altKey
, event.shiftKey
, event.metaKey
, event.keycode
, event.charCode
);
$('#second')[0].dispatchEvent( evt );
});
尝试这个例子,你会看到我所说的它是如何远非完美的意思。 基本上,做你问的方式也你说你不能的方式 - 通过值。
但是,您可以通过自定义数据与事件,这导致了看起来像这样的解决方案一起
$("#first").bind( 'keyup change', function(event)
{
$('#second').trigger( 'mimic', $(this).val() );
});
$("#second").bind( 'mimic', function( event, value )
{
$(this).val( value );
})
是不是不够好?
试试这个:
$(document).ready(function() {
var $comment = '';
$('#first').keyup(function() {
$comment = $(this).val();
$comment = $comment.replace(/<\/?[^>]+>/g,"").replace(/\n/g, "<br />").replace(/\n\n+/g, '<br /><br />'); // this strips tags and then replaces new lines with breaks
$('#second').html( $comment );
});
});
工作演示: http://jsbin.com/ivulu
或者,如果你不想消毒数据: http://jsbin.com/oposu
$(document).ready(function() {
var $comment = '';
$('#first').keyup(function() {
$comment = $(this).val();
$('#second').html( $comment );
});
});
这里有一个例子 :显然你添加到文本区域的value
属性。
KeyDown事件不负责实际更新文本框的值。 您的代码工作得很好,但因为你没有在第二个文本框的事件处理程序,它看起来并不像有什么事情发生。 如果你想以更新文本框中的文本,改变它的价值,这表现在jyoseph。
如果您需要触发事件,以及(出于某种原因),你的代码书面将这样做。
你不能只是“创造”在客户端计算机上的事件。 你不能想象的潜在的安全漏洞? 这是一个没有脑子。 你能做的唯一的事情就是触发事件处理程序...
textarea2.onkeydown();