Light12306/Web12306/js/platform/optionBinder.js

61 lines
1.4 KiB
JavaScript
Raw Normal View History

2014-07-11 18:34:59 +08:00
define(function (require, exports, module) {
var sessMgr = require("../account/sessionMgr.js");
var resetInterfaceByUser = function () {
var user = sessMgr.current;
if (!user) {
return;
}
var p = user.options || {};
$("input[data-option-key],select[data-option-key]").each(function () {
var type = this.type;
var value = this.value;
var svalue = p[this.dataset.optionKey];
if (typeof (svalue) === "undefined") {
return;
}
if (type === "checkbox")
this.checked = svalue;
else if (type === "radio") {
this.checked = svalue == value;
} else {
$(this).val(svalue);
}
});
};
sessMgr.on("sessionChanged", resetInterfaceByUser);
//初始化状态
resetInterfaceByUser();
$(document).on("change", "input[data-option-key],select[data-option-key]", function () {
var u = sessMgr.current;
var p = u.options || (u.options = {});
var type = this.type;
var key = this.dataset.optionKey;
if (type === "radio") {
var checked = $("input:radio[name=" + this.getAttribute("name") + "]:checked").val();
switch (typeof (p[key])) {
case "number":
p[key] = parseInt(checked);
break;
case "boolean":
p[key] = checked == 1;
break;
default:
p[key] = checked;
}
} else if (type === "checkbox") {
p[key] = this.checked ^ this.value == "0";
} else if (type === "number") {
p[key] = this.valueAsNumber;
} else {
p[key] = $(this).val();
}
sessMgr.save();
});
});