2015-09-22 6 views
1

Я пытаюсь реализовать пользовательские фильтры DataTables/Range Filtering fucntionality, как описано на этой странице: https://www.datatables.net/examples/plug-ins/range_filtering.html).Фильтрация фильтров пользовательских фильтров DataTables - как удалить запятые из цифр?

Он отлично работает, за исключением того, что в столбце, который я фильтрую, входят разделители запятой в числах, отображаемых в таблице, и это затягивает фильтрацию.

Вроде бы обрабатывать запятую и любые цифры, которые следуют за ней, как не существует, так что число +1234 будет рассматриваться как 1.

Я думал, что это было бы легко добавить строку, чтобы удалить эти запятые после этой строки:

var dit100 = parseInt(data[3], 10) || 0; 

Я пробовал различные способы, чтобы заменить запятые ни с чем, в том числе это:

dit100 = dit100.replace(/,/g, ''); 

... и другие методы тоже.

Однако в каждом случае добавление одной дополнительной строки останавливает выполнение сценария DataTables.

Что странно, что выше заменить команда делает работу в JSFiddle: https://jsfiddle.net/pudqpr2t/

Я знаю, что я, вероятно, делать что-то глупое, но я не могу определить, что я делаю неправильно.

Любые предложения?

Спасибо!

+0

просьба привести пример разметки/таблицы. Очевидно, у вас есть другие проблемы, кроме путаницы типа. – davidkonrad

ответ

0

Это выстрел в темноте, но не так ли, потому что вы пытаетесь сделать замену на int?

Возможно попробовать

var dit100 = data[3] || 0; 
dit100 = dit100.replace(/,/g, ''); 
dit100 = parseInt(dit100 , 10); 

Вы затем сделать замену на строку перед преобразованием его в int

+0

Спасибо, Я пробовал то, что вы предлагаете, что имеет большой смысл, но оно все еще нарушает сценарий. Я добавил несколько предупреждений, и отображается только первое из трех: var dit100 = parseInt (data [3], 10) || 0; alert (dit100); dit100 = dit100.replace (/,/g, ''); alert (dit100); dit100 = parseInt (dit100, 10); alert (dit100); Это означало бы, что ему не нравится строка с функцией replace, но она по-прежнему выглядит как действительный JavaScript для меня. – Mark

+0

попробуйте использовать 'var regex = new RegExp (',', 'g');' и 'dit100 = dit100.replace (regex, '');'. По-видимому, некоторые браузеры не любят '/,/g' и предпочитают объект RegExp' –

+0

@ li0n_za Это похоже на трюк. Благодаря! – Mark

Смежные вопросы