javascript - Filtering on string starting value -
i have search bar show rows cell contains specific value, want ones start value, if start it, not if contain in middle of string.
this have:
var $rows = $('#tableid tbody tr'); $('#search').keyup(function() { var val = $.trim($(this).val()).replace(/ +/g, ' ').tolowercase(); $rows.show().filter(function() { var text = $('.filterclass', this).text().replace(/\s+/g, ' ').tolowercase(); return !~text.indexof(val); }).hide(); });
what code does: using indexof
test presence of val
(the ~
operator converting -1
0
"falsy" , !~text.indexof(val)
testing whether val
anywhere in text
).
solution: check if indexof
0
(in other words, val
begins @ index 0
in text
):
var $rows = $('#tableid tbody tr'); $('#search').keyup(function() { var val = $.trim($(this).val()).replace(/ +/g, ' ').tolowercase(); $rows.show().filter(function() { var text = $('.filterclass', this).text().replace(/\s+/g, ' ').tolowercase(); return text.indexof(val) !== 0; // <-- note line }).hide(); });
side note: simpler understand code means "only show rows this" understand "hide rows not this". suggest changing code's structure this:
$rows.hide() $rows.filter(/* filter code */).show()
(this mean removing exclamation mark return statement well)
Comments
Post a Comment