Я использую dataTables для поиска данных в моей таблице HTML.
Проблема возникает, когда я пытаюсь фильтровать по номеру. Числа отформатированы, поэтому они не фильтруются должным образом.
Пример:
В таблице у меня есть ячейка, которая содержит «123 456» (вместо «123456»).
Если я введу в поле поиска «1234», оно отфильтрует число. Если я наберу «3456», он найдет то, что я ищу.
Я попытался отформатировать набранные цифры, но это не сработало достаточно (он отформатирует «1234» в «1234», поэтому не найдет «123 456», потому что запятая не на месте. Другой пример - если я буду искать «50», это отфильтрует 5000):
$( "#activity_table_filter input" ).keydown( function(){
var current_value = $( "#activity_table_filter input" ).val();
current_value = current_value.replace(/,/g, ''); //remove any commas from current value.
var key = event.keyCode;
var entered_value = String.fromCharCode( (96 <= key && key <= 105) ? key - 48 : key ); //charCode doesnt really get numpad numbers
if( !isNaN( current_value ) && current_value != '' && !isNaN( entered_value ) ){ //if current and entered value are numeric, and current value is not an empty string
if( current_value % 1 === 0 && current_value.length >= 3 ){ //if the number is an integer and has 3 digits
current_value = current_value + '0'; //add a last char
var formatted_value = parseInt(current_value).toLocaleString(); //format to beautiful
formatted_value = formatted_value.toString(); //Convert to string
formatted_value = formatted_value.slice(0,-1); //remove added '0' from the end
$( "#activity_table_filter input" ).val( formatted_value ); //change value of input to formatted input.
}else{ //if the number is a float
}
}
});