Javascript 按键事件和真正的键盘按键之间有什么区别?

Javascript 按键事件和真正的键盘按键之间有什么区别?,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我用以下代码填充表单字段,但它不会将ng pristine更改为ng dirty $("#username").keypress(function(event) { var key = event.keyCode || event.which; $('#username').val($('#username').val() + String.fromCharCode(key)); }); $('#username').trigger(jQuery.Event('keypress', {which

我用以下代码填充表单字段,但它不会将ng pristine更改为ng dirty

$("#username").keypress(function(event) {
var key = event.keyCode || event.which;
$('#username').val($('#username').val() + String.fromCharCode(key));
});
$('#username').trigger(jQuery.Event('keypress', {which: 77}));

有没有什么功能可以完全模拟真实的键盘按键?

好吧,这里有两件事——按键和真实用户发起的按键之间的区别,这就是代码不起作用的原因

为什么你的代码不起作用 让我们从代码不工作的原因开始——Angular知道如何通过一种称为摘要循环的方法来更新其DOM。它通过让每个角度系统功能计划一个摘要来实现这一点,如果一个尚未进行

您的代码需要通过调用
$rootSCope.$apply()
来模拟这一点

也可以考虑不要用jQuery操纵DOM,而是使用角度来代替任务-改变值,该用户名在控制器范围内绑定。< /P> 至于区别呢 一个是受信任的DOM事件,另一个不是——尽管这不是什么大问题,也不是问题的起因。当您触发事件时,与DOM的某些交互不会发生,但会发生在真实的用户交互中-这是一个安全功能,在这里不起作用。

感谢此链接:


这一个模拟了完全真实的按键。

jQuery
事件和
角度
事件不会混合。如果你想做这个模拟,使用任何量角器或硒可以在任何范围对象上调用<代码> $Apple()/<代码>,不只是<代码> $ROOTHORCTORION/CODE >,这里最重要的地方是:“同样,考虑不要用jQuery操纵DOM”。但我尽量不去猜测OP在做什么——例如,如果他正在测试或删除一个可能不可能的网站。charlietfl这也是一个很好的评论,投票表决,如果他可以访问范围对象,他绝对不会导致应用程序范围内的摘要循环。谢谢你的回复,但我不知道该怎么做。我正在尝试使用firebug填充输入,那么我该怎么办?@Salman在Angular应用程序上触发一个
$rootScope.$apply
。您还可以执行
angular.element($(“#用户名”)).scope().$apply()