其实很简单,当选择完一个文件之后,会将文件名存放在input中的value值中,当下一次change之后,比对玩发现,value值没有发生变化,所以不能触发。
所以,只需要下次将value值清空就ok了;
第一步:找到节点
var _input = $('#fileToUpload');
第二步:清空数据
_input.val('');//及时清空避免二次选择同一文件不能触发change事件
话不多说直接上代码:
//批量导入用户
$(document).on('change','#fileToUpload', function () {
AddressBook.uploadFile();
});
uploadFile: function () {
var file = $('#fileToUpload').val();
var _input = $('#fileToUpload');
if (file != '') {
var filename = file.replace(/.*(\/|\\)/, '');
var fileext = (/[.]/.exec(filename)) ? /[^.]+$/.exec(filename.toLowerCase()) : '';
//检查文件格式
if (fileext == 'xlsx' || fileext == 'xls') {
var formData = new FormData($("#uploadForm")[0]);
$.ajax({
url: OC.filePath('address_book', 'ajax', 'PHPExcel.php'),
type: 'POST',
data: formData,
async: false,
cache: false,
contentType: false,
processData: false,
success: function (json) {
if (json.status == "success") {
_input.val('');//及时清空避免二次选择同一文件不能触发change事件
OC.dialogs.alert(t('settings', json.data.msg), t('settings', 'Notice'), true);
var userlists = json.data.userlists;
if (userlists != "") {
$.each(userlists, function (k, row) {
if(!row.isRepeat) {
$('#applytable').datagrid('insertRow',{
index: k,
row: {
id : row.id,
name : row.name,
contact: row.contact,
room: row.room,
groups: row.groups
},//节点数据
});
}
})
}
} else {
OC.dialogs.alert(t('settings', json.message), t('address_book', 'Warning'), true);
}
},
error: function (json) {
OC.dialogs.alert(t('settings', json.message), t('address_book', 'Warning'), true);
}
});
} else {
OC.dialogs.alert(t('address_book', "filetype must be '.xls' or '.xlsx'."), t('address_book', 'Warning'), true)
}
} else {
OC.dialogs.alert(t('address_book', "please chose file which filetype is 'excel'"), t('address_book', 'Warning'), true);
}
}