【发布时间】:2019-04-16 11:42:55
【问题描述】:
我正在为表单中的某些文本输入使用日期选择器脚本。该表单位于由表格中的按钮触发的模式中。我在使用导出到 csv 脚本时遇到问题,日期选择器出现在我的 csv 中并破坏了内容。
所以我想,最简单的解决方案是在导出时删除 datepicker 类,但这不起作用。
我已在 jQuery 代码中添加了一个警报,以确保其均匀触发。果然是。由于某种原因,它不会删除该类。关于如何修复 removeClass 的任何建议,或者更好的是,如何确保日期选择器没有出现在我的 csv 中。
这是表单所在的模态:
<div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="editModalLabel">
<div class="modal-dialog controls" role="document">
<div class="modal-content">
<div class="modal-header">
<button class="close" type="button" data-dismiss="modal" aria-label="Close"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span></button>
<h4 class="modal-title bold" id="controlsModalLabel">Edit Entry</h4>
</div>
<div class="modal-body">
<h3 class="center">You are about to edit entry for</h3><br/>
<h3 class="alert login"></h3>
<form class="smallForm" method="POST" action="/staffmanager/loa_accom_update">
<input id="_csrf" type="text" name="_csrf" hidden="hidden"/>
<input class="la_id form-control" type="hidden" name="la_id"/>
<label class="bold">Start date:</label>
<input class="start_date date datepicker form-control" type="text" name="start_date" autocomplete="off" required="required"/><br/>
<label class="bold">End date:</label>
<input class="end_date date datepicker form-control" type="text" autocomplete="off" name="end_date"/><br/>
<label class="bold">SIM link:</label>
<input class="sim form-control" type="text" name="sim" autocomplete="off" required="required"/><br/>
<label class="bold">Notes:</label>
<textarea class="note form-control" type="textarea" name="note" autocomplete="off"></textarea>
<div class="modal-footer">
<button class="btn btn-default" type="button" data-dismiss="modal">Cancel</button>
<button class="btn btn-success" type="submit">Submit</button>
</div>
</form>
</div>
</div>
</div>
</div>
jquery 代码:
$('#export').on('click', function(){
$('.date').removeClass('datepicker');
});
表格导出到 csv 脚本:
function downloadCSV(csv, filename) {
var csvFile;
var downloadLink;
// CSV file
csvFile = new Blob([csv], {type: "text/csv"});
// Download link
downloadLink = document.createElement("a");
// File name
downloadLink.download = filename;
// Create a link to the file
downloadLink.href = window.URL.createObjectURL(csvFile);
// Hide download link
downloadLink.style.display = "none";
// Add the link to DOM
document.body.appendChild(downloadLink);
// Click download link
downloadLink.click();
}
function exportTableToCSV(filename) {
var csv = [];
var rows = document.querySelectorAll("table tbody tr,table thead tr");
for (var i = 0; i < rows.length; i++) {
var row = [], cols = rows[i].querySelectorAll("td,th");
for (var j = 2; j < cols.length; j++)
row.push(cols[j].innerText.trim());
csv.push(row.join(","));
}
// Download CSV file
downloadCSV(csv.join("\n"), filename+(new Date().getTime())+".csv");
}
【问题讨论】:
-
你确定 $('.date') 对象存在吗?试试 console.log( $('.date').length+' '+$('.date').val() );
-
我正在测试一些东西,将日期类从输入中删除了一分钟,并忘记在发布之前将它们放回原处。是的,它存在并应用于 start_date 和 end_date 输入。我做了你提到的console.log,它返回2。
-
如果您要销毁 datepicker 对象会不会更容易?
$( '.date' ).datepicker( 'destroy' ); -
它在顶部。如果有帮助,我可以发布整个页面。不过我可以向你保证它就在那里。
-
您能否发布完整代码或代码的简化版本来演示您的错误,以便我们轻松调试而不是猜测错误可能在哪里。
标签: javascript jquery html