我有一个包含DataTables的页面,每行上都有操作按钮。其中一个按钮应该会打开一个甜蜜的警报,其中包含我的selectizejs输入字段。因此,用户可以从列表中选择或删除选项,然后在甜蜜警报中单击“确定”以保存它。
我被困在初始化selectize元素并将其放入甜蜜警报之间的步骤。
我没有看到用于初始化swal组件中的selectizejs字段的选项,因此我尝试了很多事情来对其进行初始化,然后将其放置在sweetalert的content字段中。
在我的方法中,我在视图中创建了输入元素:
<input type="text" id="adminvollabels" class="adminvollabels-select" value="test1,test2,test3" placeholder="<?=lang("flow_company_skills_placeholder")?>" name="adminvollabels">
jQuery代码如下:
$('.vol-label-link').on('click', function(e) {
e.preventDefault();
var userId = $(this).data("user-id");
var ele = $('<div class="row"></div>');
ele.append('<div class="col-md-12"><label for="adminvollabels">testlabel</label></div>');
$('.adminvollabels-select').selectize({
delimiter: ',',
persist: false,
create: function(input) {
return {
value: input.toLowerCase(),
text: input.toLowerCase()
}
}
});
ele.append('<div class="col-md-12"><div class="form-group">'+$('.adminvollabels-select')+'</div></div>');
swal({
title: res.VolLabelUpdateTitle,
content: selectizeElement,
icon: "info",
buttons: {
cancel: {
text: res.BtnCancelText,
visible: true,
className: "btn-secondary"
},
confirm: "ok"
}
}).then(function (isConfirm) {
if (isConfirm) {
$.ajax({
//Do AJAX stuff
});
}
})
});
通过这种方法,我尝试执行以下步骤:
1)在HTML中创建输入元素
2)单击vol-label-link元素
3)(在JS中),使用所有div和col-md的对象创建一个临时DOM对象
4)(在JS中)将输入字段设为selectize.js字段
5)(在JS中)将此元素附加到我的临时DOM对象中
6)将此临时DOM对象放在SWAL的“内容”选项中。
关于6的注释:由于我认为SWAL内容选项仅允许原始HTML(我认为它对它执行parseHTML)。因此,我尝试在将完整的HTML DOM临时对象插入内容字段之前对其进行构建。
但是使用此代码,我的HTML看起来像这样:
<div class="col-md-12"><label for="adminvollabels">testlabel</label></div><div class="col-md-12"><div class="form-group">[object Object]</div></div>
我也一直在尝试使用.clone(),但是我无法在初始化的selectizejs字段上使用它。