我想写一个JS条件来禁用以下条件的保存按钮;
我写了以下代码;
if ((self.model.get("status") === "CLOSED") || (!self.model.hasPrivilege("UPDATE_GLOBAL") && !self.model.hasPrivilege("UPDATE_LOCAL"))) {
$("#save").attr("disabled", true);
}
如果这是最优化的代码,请告诉我。 还有任何不必要的括号(总是让我困惑!!)
答案 0 :(得分:1)
您已经说过了
如果我的模型没有BOTH UPDATE_GLOBAL和UPDATE_LOCAL权限
......但那不是条件的一部分正在检查。它会检查您是否不同时拥有这两者;如果您只有一个,则检查结果不正确。
如果您希望为status = CLOSED禁用该按钮,或者您的模型没有两个权限,则:
if (self.model.get("status") === "CLOSED" || !(self.model.hasPrivilege("UPDATE_GLOBAL") && self.model.hasPrivilege("UPDATE_LOCAL"))) {
$("#save").attr("disabled", true);
}
还有任何不必要的括号(总是让我困惑!!)
是的,你不需要self.model.get("status") === "CLOSED"
周围的parens(但它们是无害的)。
另请注意,您的代码永远不会启用按钮,它只是禁用它或单独使用它。如果你想在禁用条件为真时启用,那么:
$("#save").attr("disabled", self.model.get("status") === "CLOSED" || !(self.model.hasPrivilege("UPDATE_GLOBAL") && self.model.hasPrivilege("UPDATE_LOCAL")));
或(更容易调试):
var flag = self.model.get("status") === "CLOSED" || !(self.model.hasPrivilege("UPDATE_GLOBAL") && self.model.hasPrivilege("UPDATE_LOCAL"));
$("#save").attr("disabled", flag);
答案 1 :(得分:0)
我会这样说:
if (self.model.get("status") === "CLOSED" || !(self.model.hasPrivilege("UPDATE_GLOBAL") && self.model.hasPrivilege("UPDATE_LOCAL")))