如何防止dojo上的事件OnChange选择

时间:2013-02-28 04:33:47

标签: javascript dojo

我正致力于本地化并使用cookie来存储语言。我有Select

var select = new dijit.form.Select({
    name: "languageSelect",
    onChange: function (value) {
        changeLanguage(value);
    }
}, "languageSelect");
onChange事件中

将调用方法changeLanguage

 var changeLanguage = function (language) {
    $.ajax({
        type: "PUT",
        url: "/api/accounts/changelanguage?language=" + language,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            window.location.reload(false);
        }
    });
};

此方法用ajax调用服务器然后重新加载页面。

问题是:在页面加载时,我需要阅读之前用户选择的Cookie language并将其设置为Select

select.set("value", readCookie("language"));

但是,这个set导致事件OnChange触发,然后重新加载页面,这在开始时我不想要。我尝试使用下面的一个标志,但它没有用完:

var select = new dijit.form.Select({
    name: "languageSelect",
    style: { width: '200px' },
    onChange: function (value) {
        if (isLoading == false)
            changeLanguage(value);
    }
}, "languageSelect");

var isLoading = true;
select.set("value", readCookie("language"));
isLoading = false;

无论如何要解决它,我正在考虑阻止事件OnChange触发set方法,但还没有找到如何做到这一点。

1 个答案:

答案 0 :(得分:6)

尝试添加false,例如:

select.set("value", readCookie("language"));

select.set("value", readCookie("language"), false);
false方法末尾的

set()标记会阻止onChange事件。