【问题标题】:How to trigger an onChange event in HTML, even if the content is changed in js?HTML中的onChange事件如何触发,即使js中的内容发生了变化?
【发布时间】:2011-10-18 17:07:27
【问题描述】:

我知道 HTML onChange 事件仅在元素模糊时触发。

但是当文本框的内容发生变化时,有没有办法运行脚本?即使在Javascript中更改?

我的表单中有一个文本框来选择日期。我还有一个带有日历的按钮来选择日期。这个日历写在文本框中,我想在日期改变时做点什么。

我无法更改日历的 Javascript。

我还希望兼容所有主流浏览器(IE7-9、Firefox、Chrome、Safari、Opera...)。

【问题讨论】:

  • 日历是否有活动通知您选择了某些内容?写得好的组件可以。
  • 你有演示链接吗?
  • @epascarello:不,没有这样的事件。
  • @GregThompson:我现在在本地工作,所以我没有任何网址可以给你。

标签: javascript html forms input dom-events


【解决方案1】:

您正在寻找突变事件(例如 DomAttrModified)。

请参阅Detect element content changes with jQuery,如果这对您有帮助。

【讨论】:

  • 我不知道如何正确使用突变事件,你能举个例子吗?是否兼容所有浏览器?
  • 不,它们不是跨浏览器,而是“新”实现。但是我认为有现成的插件/脚本可以表现得像突变一样。我至少见过 jQuery Mutation Events 插件。
  • 谢谢,但我不能在我的项目中使用 jQuery。
【解决方案2】:

我找到了我的问题的答案,这可能不是更好的答案,但仍然有效。它使用 javascript 计时器。

function watchElement()
{
    var newVal = document.FormName.TextboxName.value;
    if(oldVal != newVal) {FunctionToCall();}
    oldVal = newVal;
}

var oldVal = document.FormName.TextboxName.value;
setInterval(watchElement, 500);

我知道这不是世界上最好的代码,但它适用于所有主流浏览器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-28
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    相关资源
    最近更新 更多