-->

的Javascript发送到一个键码 元件(Javascript sending key co

2019-06-28 01:40发布

我无法弄清楚如何在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>

任何想法我怎么能做到这一点?

Answer 1:

被发送的情况下,浏览器只是没有反应,它(即,将字符的文本域)

并非所有的浏览器(我知道的),让你分派事件,不只是触发它们。 但是,即使这样做是远远不够完善

// 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 );
})

是不是不够好?



Answer 2:

试试这个:

$(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 );
});
});


Answer 3:

这里有一个例子 :显然你添加到文本区域的value属性。



Answer 4:

KeyDown事件不负责实际更新文本框的值。 您的代码工作得很好,但因为你没有在第二个文本框的事件处理程序,它看起来并不像有什么事情发生。 如果你想以更新文本框中的文本,改变它的价值,这表现在jyoseph。

如果您需要触发事件,以及(出于某种原因),你的代码书面将这样做。



Answer 5:

你不能只是“创造”在客户端计算机上的事件。 你不能想象的潜在的安全漏洞? 这是一个没有脑子。 你能做的唯一的事情就是触发事件处理程序...

textarea2.onkeydown();


文章来源: Javascript sending key codes to a