javascript - 如何模拟用户对输入和按钮元素的交互?

标签 javascript html angular

所以我这里有一个代码 this stackblitz example .

基本上有一个简单的表单,带有一个输入和一个按钮。按下按钮会将输入的当前值复制到标签:

enter image description here

点击后:

enter image description here

html:

<input id="inputID" [(ngModel)]="inputValue" />
<button id="buttonID" (click)="set()">send</button>
<hr/>
<label> new Value: {{labelValue}} </label>
<hr/>

JS:

  labelValue = "";
  inputValue = "defaultValue";

  set(){
    this.labelValue = JSON.parse(JSON.stringify(this.inputValue));
  }

我必须仅使用 native JS 代码来模拟用户交互。 所以我尝试以下操作(例如在浏览器控制台中):

 - document.getElementById('inputID').value = "aNewValue"; 
 - document.getElementById('buttonID').click();

问题是这样的:

enter image description here

我得到的是标签中的默认值,不是当前值。我怎样才能得到正确的值(value)?我怀疑它是关于 reflected properties 的东西,但无法弄清楚这里可能是什么问题。

更新:我尝试了以下方法,但也没有成功。

element = document.getElementById('inputID')
element.value = "aNewValue"; 
var ev = new Event('change', {
    view: window, 
    bubbles: true,
    cancelable: true,
  });
element.dispatchEvent(ev);
document.getElementById('buttonID').click();

最佳答案

Angular 在 input 事件上更新模型。您应该在设置值后手动触发它。

inputElement = document.getElementById('inputID');
buttonElement = document.getElementById('buttonID');

inputElement.value = "aNewValue";
inputElement.dispatchEvent(new Event('input', {
  view: window,
  bubbles: true,
  cancelable: true
}))
buttonElement.click();

关于javascript - 如何模拟用户对输入和按钮元素的交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51137746/

相关文章:

javascript - jsxgraph:函数图和线之间的交点消失了

javascript - 使用 javascript 构建 html 标签

html - 删除由于 <div> 元素的负定位堆积而导致的帖子末尾不需要的垂直空间

Angular HttpClient.get() 不返回完整的响应头

angular - 为什么 typescript 中的抽象属性不保留 protected 关键字

javascript - 如何将所有数组合并为一个

javascript - 如何通过单击元素删除类

javascript - 修改 Canvas 对象

javascript - 将数据传递给 Bootstrap 模态

Angular 4 组件响应式动画