dojox / mobile / SearchBox'onSearch'事件在webkit上运行两次

时间:2013-07-08 17:26:36

标签: javascript google-chrome firefox dojo safari

我正在使用Dojo 1.9。 碰巧onSearch事件在Safari和Chrome中运行两次而不是一次。在Firefox中运行正常。

SearchBox.onSearch = function(){
    console.log("it ran");
}

我需要它运行一次。我怎么能设法做到这一点?

jsfiddle重现此问题。

2 个答案:

答案 0 :(得分:1)

我认为您在不受支持的情况下使用SearchBox,即没有指定其“store”属性或其“list”属性。

我已在此处添加:http://jsfiddle.net/adrian_vasiliu/g4yLQ/2/您修改后的代码变体。通过设置store属性(这里是一个空的dojo / store / Memory):

var store = new Memory(); // empty store
var sb = new SearchBox({store: store, ...});

我只使用一次调用onSearch()(在Chrome32 / Win7中测试)。因为在实践中,SearchBox应该与商店一起使用,我认为这不是一个真正的错误。

答案 1 :(得分:0)

这种不可思议的行为对我来说似乎是一个Dojo错误。 您可以随时尝试解决方法,例如this

require(["dojox/mobile/SearchBox", "dojo/dom-construct"],
    function (SearchBox, domConstruct) {
        var sb = new SearchBox(
                {
                    placeHolder: "search",
                    incremental: false
                },
                domConstruct.create("input", { type: "search" },
                "searchDiv")
            );

        sb.startup();

        sb.onSearch = function () {
            // "Remove" the onSearch callback, don't forget to add it
            // once again, before searching.
            this.onSearch = function () {};

            alert("ran");
        };
    }
);