gpt4 book ai didi

javascript - 如何使用 jQuery 以编程方式将 ng-pristine 设置为 ng-dirty?

转载 作者:行者123 更新时间:2023-12-03 10:20:15 25 4
gpt4 key购买 nike

我正在尝试在输入中设置用户名。它填充输入并运行按键事件,但不会将 ng-pristine 更改为 ng-dirty。有什么想法吗?

我的代码:

var username = ["u", "s", "e", "r"];

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

for (var i=0;i< username.length;i++){
var c = username[i];
$('#username').trigger(jQuery.Event('keypress', {which: c.charCodeAt(0)}));
};

最佳答案

当您超出 Angular 范围时,您需要手动触发 $scope.$apply() 来触发更改。此外,您还必须手动设置标志 setDirty()

获取您当前正在使用的 Controller 范围的引用。

var scope = angular.element(document.querySelector("controllerSelector")).scope();

现在在按键事件中,触发摘要周期。

var username = ["u", "s", "e", "r"];

$("#username").keypress(function(event) {
var key = event.keyCode || event.which;
$('#username').val($('#username').val() + String.fromCharCode(key));
scope.$apply();
});

for (var i=0;i< username.length;i++){
var c = username[i];
$('#username').trigger(jQuery.Event('keypress', {which: c.charCodeAt(0)}));
scope.$apply();
};

这基本上可以解决您的问题。如果没有,您可能需要手动触发setDirty()。在范围内指向表单并设置脏标志。

scope.formName.$setDirty();

关于javascript - 如何使用 jQuery 以编程方式将 ng-pristine 设置为 ng-dirty?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29677316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com