单击 'X' 时触发的 dojo FilteringSelect 事件

dojo FilteringSelect event to fire when 'X' is clicked

当用户单击 FilteringSelect 中的 X 按钮时是否可能触发事件。 X 清除用户输入,但不会触发 onChange 事件。谢谢!

我假设您指的是 Internet Explorer 在输入文本框中显示的 X 按钮。其他浏览器不显示这个。 FilteringSelect 使用的是常规输入框,所以这个问题可以参考一般的回答:Event fired when clearing text input on IE10 with clear icon

如您所见,有几种方法。您可以使用 oninput 事件来检查显示的值何时变为空字符串(因为用户单击了 X 按钮或因为他按下退格键删除了最后一个字符)。在这种情况下,您不应监控 FilteringSelect 本身,而应监控其内部文本框(如下例所示)。

还有一个选项可以使用以下样式隐藏此 X 按钮:

.yourclass input[type=text]::-ms-clear  {
    display: none;
}

require([
    "dojo/store/Memory", "dijit/form/FilteringSelect", "dojo/on", "dojo/domReady!"
], function(Memory, FilteringSelect, on){
    var stateStore = new Memory({
        data: [
            {name:"Alabama", id:"AL"},
            {name:"Alaska", id:"AK"},
            {name:"American Samoa", id:"AS"},
            {name:"Arizona", id:"AZ"},
            {name:"Arkansas", id:"AR"},
            {name:"Armed Forces Europe", id:"AE"},
            {name:"Armed Forces Pacific", id:"AP"},
            {name:"Armed Forces the Americas", id:"AA"},
            {name:"California", id:"CA"},
            {name:"Colorado", id:"CO"},
            {name:"Connecticut", id:"CT"},
            {name:"Delaware", id:"DE"}
        ]
    });

    var filteringSelect = new FilteringSelect({
        id: "stateSelect",
        name: "state",
        value: "CA",
        store: stateStore,
        searchAttr: "name"
    }, "stateSelect");
    filteringSelect.startup();
  
    on(filteringSelect.textbox, "input", function(event) {
      if (filteringSelect.textbox.value == "")
      {
        window.alert("Cleared");
      }
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>
<link href="https://ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/resources/dojo.css" rel="stylesheet"/>
<link href="https://ajax.googleapis.com/ajax/libs/dojo/1.10.4/dijit/themes/claro/claro.css" rel="stylesheet"/>
<div class="claro">
<input id="stateSelect">
</div>