【问题标题】:change event not firing after setting value dynamically动态设置值后更改事件未触发
【发布时间】:2012-11-15 11:26:26
【问题描述】:

每当通过打开弹出窗口动态设置其值时,我想将更改事件绑定到 textarea(只读)。

我可以设置值,但更改事件没有被触发。

我使用下面的代码将更改事件绑定到 textarea :

$('textarea[name="Cordinator"]').bind("change", onChangeCordinator);
function onChangeCordinator(){}

【问题讨论】:

  • 您能否澄清“无论何时设置其值”一词。有很多可能性可以检查这一点,即 blur() 事件
  • 它的值是使用按钮上的 onclick 事件设置的...打开弹出窗口
  • 仍然不确定您要达到的目标,您能否插入一些 html 代码来澄清情况(如果答案还不够充分)
  • 在更高版本的 Jquery 中,不推荐使用绑定功能。您可以改用“on”功能。
  • 其实我还在用 1.4 :/

标签: javascript jquery


【解决方案1】:

你是如何设置值的?默认情况下,仅当浏览器用户更改值时才会触发更改事件。

如果您以编程方式设置值,则需要使用.trigger('change')

因此,您需要在 onclick 处理程序中的某个位置:

$('textarea[name="Cordinator"]').trigger('change');

【讨论】:

  • 对不起,这听起来可能不对……我应该什么时候触发这个功能??
  • 无论何时何地更改值。
  • 实际上我正在使用弹出窗口来获取值...我无法访问该代码(也无法修改它)...无论如何我可以触发该功能。 ..也许使用窗口焦点功能或其他一些??
  • 您正在使用弹出窗口获取值。您是否还使用它来设置值?如果是这样,我认为弹出页面在同一个域上?如果是,您可以使用onbeforeunload,如下所示:capture-the-close-event-of-popup-window-in-javascript
  • 是的,我刚刚看到...感谢您的建议...现在测试它... :)
【解决方案2】:

你的 js 有语法错误

把这个改成

$('textarea[name="Cordinator"]').bind("change", onChangeCordinator);});

这个

$('textarea[name="Cordinator"]').bind("change", onChangeCordinator);

更新:

你需要像这样在 textarea 上设置值后手动触发它

$('textarea[name="Cordinator"]').val('Set Your Value Here').trigger('change');

DEMO

【讨论】:

  • 哦对不起...这是一个错误...我只使用这一行 $('textarea[name="Cordinator"]').bind("change", onChangeCordinator);跨度>
  • 实际上我正在使用弹出窗口来获取值...我无法访问该代码(并且无法修改它)...无论如何我可以触发该功能。 ..也许使用窗口焦点功能或其他一些??
猜你喜欢
  • 1970-01-01
  • 2015-04-24
  • 2013-04-10
  • 2015-10-13
  • 1970-01-01
  • 2013-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多