动态设置值后,更改事件未触发

5

我希望能够在弹出窗口动态设置文本区域(只读)的值时绑定更改事件。

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

我使用以下代码将更改事件绑定到文本区域:

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

你能解释一下“每当它的值被设置时”这个术语吗?有很多可能的方法来检查这个,比如blur()事件。 - toxicate20
其值是通过单击按钮上的onclick事件设置的...该事件会打开弹出窗口。 - Sheetu
你还不确定要实现什么,能否插入一小段HTML代码来澄清情况呢(如果答案还不够充分)? - toxicate20
使用较新版本的Jquery时,bind函数已被弃用。您可以使用“on”函数代替。 - Tom Hubbard
实际上我还在使用1.4版本 :/ - Sheetu
2个回答

8

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

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

因此,在您的 onclick 处理程序中的某个地方,您需要添加:

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

抱歉,可能听起来不太对...我应该在什么时候触发函数? - Sheetu
无论何时何地,只要您更改值。 - jfrej
实际上,我正在使用弹出窗口来获取值...而且我没有访问那个代码(也无法修改它)...有没有办法可以触发该函数...也许使用窗口焦点函数或其他方法? - Sheetu
你正在使用弹出窗口获取值。你还使用它来设置值吗?如果是这样,我假设弹出页面和主页面在同一域名下?如果是的话,你可以像这样使用onbeforeunloadcapture-the-close-event-of-popup-window-in-javascript - jfrej
是的,我刚看到了...谢谢你的建议...现在正在测试它... :) - Sheetu

3

您的JS代码存在语法错误

请将其修改为:

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

这个

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

更新:

好的,你需要在设置文本区域的值后手动触发它,像这样:

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

DEMO


抱歉...那是我的错误...我只使用了这一行代码: $('textarea[name="Cordinator"]').bind("change", onChangeCordinator); - Sheetu
实际上,我正在使用弹出窗口来获取值...而且我没有访问那个代码(也无法修改它)...有没有办法可以触发该函数...也许使用窗口焦点函数或其他方法? - Sheetu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接