【问题标题】:How to fire an input or change event to trigger AngularJS from external Javascript?如何触发输入或更改事件以从外部 Javascript 触发 AngularJS?
【发布时间】:2017-08-27 01:51:31
【问题描述】:

我正在做一个学校项目,在一个使用表单将用户数据发送到 Mailchimp 的网站上工作。该站点使用 Angularjs 来控制其输入(我无法访问此代码,也没有任何关于 Angularjs 的知识)。

我想要完成的事情

我希望我的脚本将保存在 'personalitet' 范围中的任何文本按名称 'form[5606]' 插入到输入中,并将其接受为已填充退出,无需用户进行任何交互。

但是 Angularjs 拒绝在没有用户与字段交互的情况下查看输入,我该怎么办?

如何在不使用外部 JavaScript 访问 Angularjs 脚本或 HTML 标记的情况下触发输入或更改事件?

我的脚本

var personalitet = document.getElementById("personalitet").innerHTML;
document.getElementsByName("form[5606]")[0].value = personalitet;

该网站可以在这里访问:site

我试过使用,没有运气:

input.trigger('input');
input.trigger('change');

【问题讨论】:

  • 您可能需要在 jsfiddle 或 plunker 中创建场景。您似乎正在尝试将数据绑定到视图,但需要更多信息。请注意,angularjs 是 javascript 框架,您始终可以在 angularjs 应用程序中编写自定义 javascript。
  • 如果您正在编写客户端脚本,如何无法访问 Angular?
  • 这是公司正在使用的自定义 CMS 类型软件,我无法访问脚本,但插入自己的脚本。
  • 您尝试做的事情不会奏效。您不能从外部 Angular 更新 DOM 并期望 Angular 知道它。
  • 感谢您的评论。然而,我研究过这个问题和其他问题(及其答案)表明这是可能的,就像这个链接中的第一个答案:stackoverflow.com/questions/17656244/…

标签: javascript html angularjs forms


【解决方案1】:

终于设法让它工作,只需要一个 .change 告诉 Angularjs 输入值已经改变。因此,最终的脚本是:

var personalitet = document.getElementById("personalitet").innerHTML;
document.getElementsByName("form[5607]")[0].value = personalitet;
$( "input[name='form[5607]']" ).change();

【讨论】:

    猜你喜欢
    • 2018-08-08
    • 1970-01-01
    • 1970-01-01
    • 2019-12-28
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多