0

我需要将用户输入的字符模拟到文本区域中,例如(jsFiddle

<textarea rows=3 cols='30' id='txt'></textarea>

<script>

var $txt = jQuery('#txt')    
var e = jQuery.Event("keypress");
e.which = 49;    
$txt.focus().trigger(e)

</script>

它正确地将焦点设置在 textarea 上,但字符“1”(ascii 代码 49)未出现在文本框中。我究竟做错了什么?

更新:根据答案,我发现我没有提供足够的信息,所以这里是:重点不仅仅是更改文本区域的值,而是实际模拟用户使用键盘输入该值。我正在尝试连接一些 SharePoint 控件,当用户在某个文本区域中按下某个键时,它会做一些时髦的事情。仅通过 val() 添加一些值对我没有任何好处,因为需要触发所有正确的关键事件。

所以,问题仍然存在——如何根据上面示例中的尝试模拟用户输入?

4

3 回答 3

2

改用val()

var $txt = jQuery('#txt');
$txt.focus().val('1');

演示

实际上,您甚至不需要该focus()方法来执行此操作,除非它用于不同的目的。val()单独使用会起作用。

你也可以用纯 JavaScript 做到这一点:

var txt = document.getElementById("txt");
txt.value = "1";
于 2013-06-20T16:00:54.907 回答
1

如果您想模拟键盘进行测试,请尝试...

var $txt = jQuery('#txt');
$txt.val('1');
$txt.trigger('change'); // keypress, whatever
于 2013-06-20T16:18:53.330 回答
0

将此行添加到脚本的末尾以将字符附加到文本区域。

jQuery('#txt').append(String.fromCharCode(49));
于 2013-06-20T16:03:03.327 回答