У меня ошибка в рабочей среде и не могу воспроизвести ее в среде dev, поэтому я думаю, что это вопрос браузеров.Ввод Checkbox + DataTables + Jquery иногда возвращает «on» вместо входного значения
У меня есть DataTable завалена сторона сервера обрабатывающий и пользовательский столбец, который является флажком, вот упрощенный код:
$("#data-table").DataTable({
"serverSide" : true,
"ajax" : {
"url" : "/list",
"dataSrc" : "data"
},
"columns" : [{
"data" : function(row) {
return '<input class="id-checkbox" type="checkbox" name="ids[]" value="' + row.id + '">';
},
"class" : "text-center",
"orderable" : false
},{
"data" : "name",
"class" : "text-center",
"orderable" : false
}]
});
Тогда у меня есть некоторые JQuery коды, чем всякий раз, когда кнопка нажата, а затем получить выбранные элементы и разместить его на внутренний сервер:
$("#button").on("click", function(){
var ids = [];
$('input[type=checkbox]:checked').each(function() {
ids.push(this.value);
});
if (ids.length == 0) {
//POST Ajax request to server
}
});
дело в том, что иногда ids
массив заполняется с некоторыми идентификаторами, а некоторые «на» слово, так что тогда мои серверные взрывается, как ждет, когда массив из Long
. Вот пример stacktrace:
Failed to convert value of type 'java.lang.String' to required type 'java.lang.Long[]';
nested exception is java.lang.NumberFormatException:
For input string: "109287,109286,109273,108820,on,on"
У кого-нибудь есть идеи, что происходит?
Это, возможно, придется делать с 'ввода [тип = флажок]: checked', как он не уникален, и вы можете получить флажок, не связанный с тем, что вам нужно. – thekodester
Вы можете попробовать 'input [name^= ids]: checked' Я считаю, что это должно работать, чтобы сделать его более конкретным – thekodester
Будет добавлено больше спецификаций для селектора. –