我正在做下载选择多文件功能。我有一个关于如何将我选择的复选框中的值放入data-files属性的问题。目前,我只能将复选框中的值放入输入中。
下面是我的代码:
$('#multiselect-drop input').change(function() {
var s = $('#multiselect-drop input:checked').map(function() {
return this.value;
}).get().join(' ');
$('#results').val((s.length > 0 ? s : ""));
});<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="results" style="width:60%;">
<div id="multiselect-drop">
<input type="checkbox" value="file/john.jpeg">
<input type="checkbox" value="file/important.pdf">
<input type="checkbox" value="file/company.pdf">
</div>
<button id="download-button" class="btn btn-primary btn-xs" data-files="">Download</button>
输出结果如下图所示,它将根据我的勾选来选择输入中的值。

实际上,我希望结果是我选中的复选框中的值放入data-files属性中。如下所示的示例结果:
<button id="download-button" class="btn btn-primary btn-xs" data-files="file/john.jpeg file/important.pdf file/company.pdf">Download</button>希望有人能指导我如何解决这个问题。谢谢。
发布于 2021-10-14 07:24:39
首先,您应该使用attr() jQuery方法,尝试将其设置为属性:
$('#download-button').attr('data-files', (s.length > 0 ? s : ""));然后变成:
$('#multiselect-drop input').change(function() {
var s = $('#multiselect-drop input:checked').map(function() {
return this.value;
}).get().join(' ');
$('#results').val((s.length > 0 ? s : ""));
$('#download-button').attr('data-files', (s.length > 0 ? s : ""));
});发布于 2021-10-14 08:44:04
并不是所有的东西都必须以jQuery的方式访问、读取或写入。使用HTMLElement的dataset属性...
$('#multiselect-drop input').change(function() {
let s = $('#multiselect-drop input:checked').map(function() {
return this.value;
}).get().join(' ');
$('#results')[0].value = s;
$('#download-button')[0].dataset.files = s;
});<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="results" style="width:60%;">
<div id="multiselect-drop">
<input type="checkbox" value="file/john.jpeg">
<input type="checkbox" value="file/important.pdf">
<input type="checkbox" value="file/company.pdf">
</div>
<button id="download-button" class="btn btn-primary btn-xs" data-files="">Download</button>
发布于 2021-10-14 05:40:50
使用这种方法,您可以将值设置为data-files并从中获取值。
$('#download-button').attr('data-files', (s.length > 0 ? s : ""));
var a = $('#download-button').data('files'); 下面是一个工作示例,希望对您有所帮助
<!DOCTYPE html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<input type="text" id="results" style="width:60%;">
<div id="multiselect-drop">
<input type="checkbox" value="file/john.jpeg">
<input type="checkbox" value="file/important.pdf">
<input type="checkbox" value="file/company.pdf">
</div>
<button id="download-button" class="btn btn-primary btn-xs" data-files="">Download</button>
<script>
$('#multiselect-drop input').change(function() {
var s = $('#multiselect-drop input:checked').map(function() {
return this.value;
}).get().join(' ');
$('#results').val((s.length > 0 ? s : ""));
$('#download-button').attr('data-files', (s.length > 0 ? s : ""));
});
$('#download-button').on('click',function(){
var a = $('#download-button').data('files');
alert(a)
});
</script>
</body>
</html>
https://stackoverflow.com/questions/69565346
复制相似问题