Andrey
问问题
7918 次
5 回答
2
事件被发送,浏览器只是不响应它(即,将字符放在文本区域中)
并非所有浏览器(据我所知)都允许您调度事件,而不仅仅是触发它们。但即使这样做也远非完美
// 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 );
})
这够好吗?
于 2009-08-05T15:36:35.447 回答
1
尝试这个:
$(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 );
});
});
于 2009-08-05T15:03:48.150 回答
0
这是一个示例:显然您添加到 textarea 的value
属性中。
于 2009-08-05T14:59:54.773 回答
0
keydown 事件不负责实际更新文本框的值。您的代码工作得很好,但由于您在第二个文本框上没有事件处理程序,因此看起来没有发生任何事情。如果要更新文本框中的文本,请更改其值,如 jyoseph 所示。
如果您还需要触发事件(出于某种原因),您编写的代码将执行此操作。
于 2009-08-05T15:07:52.357 回答
-3
您不能只在客户端机器上“创建”事件。你不能想象潜在的安全漏洞吗?这是不费吹灰之力的。你唯一能做的就是触发一个事件处理程序......
textarea2.onkeydown();
于 2009-08-05T16:10:41.710 回答