【问题标题】:How to overwrite the default behaviour of the onchange event of a FilteringSelect dojo widget?如何覆盖 FilteringSelect dojo 小部件的 onchange 事件的默认行为?
【发布时间】:2026-02-10 03:45:01
【问题描述】:

我有以下代码:

dijit.byId('patient').onchange(function(event){
      var term=dijit.byId('patient').get('value');                                                             
      patientList.url = ".calendar/search-patient?term="+term;
      patientList.close();                                  
})

我想要做的是覆盖 FilteringSelect dojo 小部件的“onchange”事件的默认行为。问题是我收到错误:“此延迟已解决”。

如何覆盖“onchange”事件的默认行为?谢谢你

【问题讨论】:

  • 不熟悉这个框架,但也试试加return false;
  • 我也试过了。同样的错误。我认为,一旦它看到该元素的“onchange”事件,它就会引发错误,因此它不会到达 preventDefault() 点。
  • 如果你添加alert('debug');,你看到了吗?
  • 所以你问错了问题......应该是“如何覆盖 FilteringSelect dojo 小部件的onchange 事件的默认行为?”
  • 我认为这是 preventDefault 所做的......但是是的,这就是我想要做的

标签: javascript dojo


【解决方案1】:

dijit.byId 函数返回一个 dijit 对象,我认为它没有以函数为参数的成员函数 onchange

尝试这样做:

dojo.connect(dijit.byId("patient"), "onChange", function(value)
{
    patientList.url = ".calendar/search-patient?term=" + value;
    patientList.close();
});

【讨论】:

  • 谢谢。这样我就不会收到错误,但我认为它不会监听元素的事件(或者它不会覆盖事件),因为我没有得到任何响应(我尝试过警告但没有)。
  • @sica07 这很奇怪。您确定您使用的是onChange 而不是onchange(大写字母不正确)?这是一个小提琴:jsfiddle.net/D7Xym
  • onchange 是问题所在。愚蠢的我。现在它起作用了!非常感谢!