我正在处理用户角色权限,为此我创建了一个这样的表单:
为每个复选框生成的HTML是
<div class="checker" id="uniform-department_create">
<span>
<input type="checkbox"
class="form-control department"
id="department_create"
name="department_create"
value="create">
</span>
</div>
现在onSubmit
我将调用一个可以提取用户权限的函数。它看起来像这样:
var designationForm = {
// All permissions must be added to this Array
// to manipulate checkboxes
permissions: Array('department','customer','designation'),
...
get_permissions: function() {
var allowed = Array();
$.each(designationForm.permissions, function(index, permission) {
allowed[permission] = Array();
$.each($("."+permission),function(input, value) {
if ($("#uniform-"+$(value).attr('id') + " span").hasClass('checked')) {
allowed[permission] += "{"+$(value).attr('value')+":"+"true},";
} else {
allowed[permission] += "{"+$(value).attr('value')+":"+"false},";
}
});
return allowed[permission];
});
// console.log(allowed);
return allowed;
},
...
}
它的作用基本上是检查权限数组并迭代所有权限,如果它找到一个复选框的范围包含类&#34; Checked&#34;它将它添加到允许的数组中。
如果我console
结果,那么我可以看到正确的返回但我无法返回结果数组。
答案 0 :(得分:1)
如果我控制结果然后我可以看到正确的返回但我无法返回结果数组。
和
返回空数组
复制代码并将一些额外的div / spans添加到jsfiddle:jsfiddle.net/fk2x8w9x/1并查看控制台输出给出:
[department: "{create:false},{delete:false},", customer: "{create:true},", designation: Array[0]]
即所描述的空数组,但其值设置为&#34;数组&#34;的属性。
这是因为:
obj.val =
等属性,还可以通过索引器设置属性,例如obj["val"] =
这就是这里发生的事情 - 正在添加属性而不是数组&#34; items&#34;。
如果你换行:
var allowed = Array();
allowed[permission] = Array();
到
var allowed = {};
allowed[permission] = {};
然后它可能更有意义。