有没有办法让这项工作?
我在jquery对话框中有4个复选框,每个复选框都包含base64url代码 通过关闭对话框,我想获得新的base64url代码。
这就是我想要做的。
搜索选中的复选框
(例如选择Layer1,Layer2和Layer3)
将每个值从base64url转换为十进制
(第1层:'gAAAAOAAAA'至'320000140000',
第2层:' _ __ BAIEI'到'636363636310848',
第3层:'gAAAAAAADA'到'320000000030')
实施“OR”操作(逻辑分离)
(每层的第1个十进制数是32,63,32。所以在OR运算之后,它是63.)
我做了第一步如下。
selected = [
'gAAAAOAAAA',//Layer1
'_____BAIEI',//Layer2
'gAAAAAAADA',//Layer3
'H-AAAgAEAA',//Layer4
];
$("#dialog").dialog({
autoOpen: false,
modal: true,
minWidth: 450,
buttons:{
"OK": function(){
// search for checked checkboxes
var checkList = [];
$('[class="layer"]:checked').map(function(){
var layerID = parseInt($(this).attr('id'));
var txt2 = selected[layerID];
checkList.push(txt2);
});
任何人都可以帮我完成以下步骤吗? 谢谢你的时间。
答案 0 :(得分:1)
我已经实现了您需要的大部分内容here。
var alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';
function base64decode(str) {
var bytes = [];
for (var i = 0; i < str.length; i++) {
bytes.push(alphabet.indexOf(str.charAt(i)));
}
return bytes;
}
function base64encode(bytes) {
var str = '';
for (var i = 0; i < bytes.length; i++) {
str += alphabet.charAt(bytes[i]);
}
return str;
}
$('input').click(
function () {
var values = [];
var result = [];
$('input:checked').each(
function (_, el) { values.push(base64decode($(el).data('val'))); }
);
var result = [];
if (values.length > 0) {
for (var i = 0; i < values[0].length; i++) {
result.push(
values.reduce(
function (a, b) {
return a | b[i];
},
0
)
);
}
}
$('#result').text(base64encode(result));
}
);
另外,我将Base64编码数据保存在每个复选框的数据属性中,而不是单独的数组中。