如何将字符发送到textarea

时间:2013-06-20 15:59:19

标签: javascript jquery javascript-events

我需要将字符的用户输入模拟到textarea中,例如(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()添加一些值就不会对我有任何好处,因为需要触发所有正确的键事件。

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

3 个答案:

答案 0 :(得分:2)

改为使用val()

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

请参阅DEMO

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

您也可以使用纯JavaScript执行此操作:

var txt = document.getElementById("txt");
txt.value = "1";

答案 1 :(得分:1)

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

var $txt = jQuery('#txt');
$txt.val('1');
$txt.trigger('change'); // keypress, whatever

答案 2 :(得分:0)

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

jQuery('#txt').append(String.fromCharCode(49));