使用 Angular JS 以编程方式或其他方式触发 "data-ng-change" 以更改网站上的输入值
Fire "data-ng-change" programatically or another way to change value of input on website using Angular JS
我正在编写用户脚本,不幸的是该网站使用了我不知道的 Angular JS。
有代码:
<form class="form ng-pristine ng-valid ng-valid-maxlength" name="$ctrl.actionableForm.form" _lpchecked="1">
<input type="text" maxlength="254" placeholder="" data-ng-attr-id="text-field-{{:: $ctrl.widget.header.id }}" data-ng-model="$ctrl.fieldValue.value" data-ng-change="$ctrl.updateFormFieldValue()" data-ng-blur="$ctrl.onBlur()" data-ng-focus="$ctrl.updateFormFieldValue()" data-ng-readonly="$ctrl.isReadOnly()" data-ng-trim="false" data-ng-keyup="$ctrl.handleKeyup($event)" class="form-control text-field-input ng-pristine ng-untouched ng-valid ng-not-empty ng-valid-maxlength focus-visible" id="text-field-qYMHEJMncH0S-ogeOc5CTw" data-focus-visible-added="">
我想以编程方式更改该输入的值,例如:
document.querySelector('[id^="text-field-"]').value = 'My new value';
但它不起作用,因为它不会触发 data-ng-change="$ctrl.updateFormFieldValue()" 所以新值不会被保存。
请问我该怎么做?
如果有人会找同样的东西,我是这样解决的:
const myField = document.querySelector('[id^="text-field-"]');
myField.value = 'My new value';
angular.element(myField).trigger('change');
我正在编写用户脚本,不幸的是该网站使用了我不知道的 Angular JS。
有代码:
<form class="form ng-pristine ng-valid ng-valid-maxlength" name="$ctrl.actionableForm.form" _lpchecked="1">
<input type="text" maxlength="254" placeholder="" data-ng-attr-id="text-field-{{:: $ctrl.widget.header.id }}" data-ng-model="$ctrl.fieldValue.value" data-ng-change="$ctrl.updateFormFieldValue()" data-ng-blur="$ctrl.onBlur()" data-ng-focus="$ctrl.updateFormFieldValue()" data-ng-readonly="$ctrl.isReadOnly()" data-ng-trim="false" data-ng-keyup="$ctrl.handleKeyup($event)" class="form-control text-field-input ng-pristine ng-untouched ng-valid ng-not-empty ng-valid-maxlength focus-visible" id="text-field-qYMHEJMncH0S-ogeOc5CTw" data-focus-visible-added="">
我想以编程方式更改该输入的值,例如:
document.querySelector('[id^="text-field-"]').value = 'My new value';
但它不起作用,因为它不会触发 data-ng-change="$ctrl.updateFormFieldValue()" 所以新值不会被保存。
请问我该怎么做?
如果有人会找同样的东西,我是这样解决的:
const myField = document.querySelector('[id^="text-field-"]');
myField.value = 'My new value';
angular.element(myField).trigger('change');