mirror of
https://github.com/Mottie/tablesorter.git
synced 2024-11-15 23:54:22 +00:00
Filter: filter_liveSearch set to number now searches when pressing enter. Fixes #654
This commit is contained in:
parent
931e4c1bae
commit
ea48d95fbc
@ -257,7 +257,7 @@ $(function(){
|
|||||||
<div>
|
<div>
|
||||||
<h4>Filter widget defaults (added inside of tablesorter <code>widgetOptions</code>)</h4>
|
<h4>Filter widget defaults (added inside of tablesorter <code>widgetOptions</code>)</h4>
|
||||||
<div>
|
<div>
|
||||||
<span class="label label-info">TIP!</span> Click on the link in the function column to reveal full details (or <a href="#" class="toggleAll">toggle</a>|<a href="#" class="showAll">show</a>|<a href="#" class="hideAll">hide</a> all) or double click to update the browser location.
|
<span class="label label-info">TIP!</span> Click on the link in the function column to reveal full details (or <a href="#" class="toggleAll">toggle</a>|<a href="#" class="showAll">show</a>|<a href="#" class="hideAll">hide</a> all) or double click to update the browser location.
|
||||||
</div>
|
</div>
|
||||||
<table class="options tablesorter-blue" data-sortlist="[[0,0]]">
|
<table class="options tablesorter-blue" data-sortlist="[[0,0]]">
|
||||||
<thead>
|
<thead>
|
||||||
@ -327,7 +327,7 @@ $(function(){
|
|||||||
<li><a href="example-widget-filter-formatter-select2.html">Select2 plugin</a>.</li>
|
<li><a href="example-widget-filter-formatter-select2.html">Select2 plugin</a>.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr id="filter-functions">
|
<tr id="filter-functions">
|
||||||
@ -431,7 +431,7 @@ $(function(){
|
|||||||
|
|
||||||
</tbody>
|
</tbody>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr><th colspan="3">Removed options</th><tr>
|
<tr><th colspan="3">Removed options</th></tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
|
||||||
@ -562,12 +562,12 @@ $(".search").bind('search keyup', function (e) {
|
|||||||
|
|
||||||
<h3><a href="#">Changes</a></h3>
|
<h3><a href="#">Changes</a></h3>
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<p>Moved to the wiki pages - <a href="https://github.com/Mottie/tablesorter/wiki/Changes">filter change log</a>.
|
Moved to the wiki pages - <a href="https://github.com/Mottie/tablesorter/wiki/Changes">filter change log</a>.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h3><a href="#">Localization</a></h3>
|
<h3><a href="#">Localization</a></h3>
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<p>You can now change the language of the searches used within the filter widget. For example, to change the localization to French, do the following:
|
You can now change the language of the searches used within the filter widget. For example, to change the localization to French, do the following:
|
||||||
<pre class="prettyprint lang-js">// add French support
|
<pre class="prettyprint lang-js">// add French support
|
||||||
$.extend($.tablesorter.language, {
|
$.extend($.tablesorter.language, {
|
||||||
to : 'à',
|
to : 'à',
|
||||||
|
@ -568,6 +568,9 @@ ts.filter = {
|
|||||||
}
|
}
|
||||||
c.$table.addClass('hasFilters');
|
c.$table.addClass('hasFilters');
|
||||||
|
|
||||||
|
// define searchTimer so using clearTimeout won't cause an undefined error
|
||||||
|
wo.searchTimer = null;
|
||||||
|
|
||||||
$.extend( regex, {
|
$.extend( regex, {
|
||||||
child : new RegExp(c.cssChildRow),
|
child : new RegExp(c.cssChildRow),
|
||||||
filtered : new RegExp(wo.filter_filteredRow),
|
filtered : new RegExp(wo.filter_filteredRow),
|
||||||
@ -592,6 +595,7 @@ ts.filter = {
|
|||||||
ts.filter.buildDefault(table, true);
|
ts.filter.buildDefault(table, true);
|
||||||
}
|
}
|
||||||
if (event.type === 'filterReset') {
|
if (event.type === 'filterReset') {
|
||||||
|
c.$table.find('.' + ts.css.filter).add(wo.filter_$externalFilters).val('');
|
||||||
ts.filter.searching(table, []);
|
ts.filter.searching(table, []);
|
||||||
} else if (event.type === 'filterEnd') {
|
} else if (event.type === 'filterEnd') {
|
||||||
ts.filter.buildDefault(table, true);
|
ts.filter.buildDefault(table, true);
|
||||||
@ -788,29 +792,46 @@ ts.filter = {
|
|||||||
.attr('data-lastSearchTime', new Date().getTime())
|
.attr('data-lastSearchTime', new Date().getTime())
|
||||||
.unbind('keypress keyup search change '.split(' ').join(c.namespace + 'filter '))
|
.unbind('keypress keyup search change '.split(' ').join(c.namespace + 'filter '))
|
||||||
// include change for select - fixes #473
|
// include change for select - fixes #473
|
||||||
.bind('keyup search change '.split(' ').join(c.namespace + 'filter '), function(event) {
|
.bind('keyup' + c.namespace + 'filter', function(event) {
|
||||||
$(this).attr('data-lastSearchTime', new Date().getTime());
|
$(this).attr('data-lastSearchTime', new Date().getTime());
|
||||||
// emulate what webkit does.... escape clears the filter
|
// emulate what webkit does.... escape clears the filter
|
||||||
if (event.which === 27) {
|
if (event.which === 27) {
|
||||||
this.value = '';
|
this.value = '';
|
||||||
// liveSearch can contain a min value length; ignore arrow and meta keys, but allow backspace
|
// live search
|
||||||
} else if ( (typeof wo.filter_liveSearch === 'number' && this.value.length < wo.filter_liveSearch && this.value !== '') ||
|
} else if ( wo.filter_liveSearch === false ) {
|
||||||
( event.type === 'keyup' && ( (event.which < 32 && event.which !== 8 && wo.filter_liveSearch === true && event.which !== 13) ||
|
return;
|
||||||
( event.which >= 37 && event.which <= 40 ) || (event.which !== 13 && wo.filter_liveSearch === false) ) ) ) {
|
// don't return if the search value is empty (all rows need to be revealed)
|
||||||
return;
|
} else if ( this.value !== '' && (
|
||||||
|
// liveSearch can contain a min value length; ignore arrow and meta keys, but allow backspace
|
||||||
|
( typeof wo.filter_liveSearch === 'number' && this.value.length < wo.filter_liveSearch ) ||
|
||||||
|
// let return & backspace continue on, but ignore arrows & non-valid characters
|
||||||
|
( event.which !== 13 && event.which !== 8 && ( event.which < 32 || (event.which >= 37 && event.which <= 40) ) ) ) ) {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
// change event = no delay; last true flag tells getFilters to skip newest timed input
|
// change event = no delay; last true flag tells getFilters to skip newest timed input
|
||||||
ts.filter.searching( table, event.type !== 'change', true );
|
ts.filter.searching( table, true, true );
|
||||||
})
|
})
|
||||||
.bind('keypress.' + c.namespace + 'filter', function(event){
|
.bind('search change keypress '.split(' ').join(c.namespace + 'filter '), function(event){
|
||||||
if (event.which === 13) {
|
// triggered change event won't fire a search unless the return key was pressed
|
||||||
|
if (event.which === 13 || event.type === 'search') {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
$(this).blur();
|
// init search with no delay
|
||||||
|
ts.filter.searching( table, false, true );
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
c.$table.bind('filterReset', function(){
|
},
|
||||||
$el.val('');
|
searching: function(table, filter, skipFirst) {
|
||||||
});
|
var wo = table.config.widgetOptions;
|
||||||
|
clearTimeout(wo.searchTimer);
|
||||||
|
if (typeof filter === 'undefined' || filter === true) {
|
||||||
|
// delay filtering
|
||||||
|
wo.searchTimer = setTimeout(function() {
|
||||||
|
ts.filter.checkFilters(table, filter, skipFirst );
|
||||||
|
}, wo.filter_liveSearch ? wo.filter_searchDelay : 10);
|
||||||
|
} else {
|
||||||
|
// skip delay
|
||||||
|
ts.filter.checkFilters(table, filter, skipFirst);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
checkFilters: function(table, filter, skipFirst) {
|
checkFilters: function(table, filter, skipFirst) {
|
||||||
var c = table.config,
|
var c = table.config,
|
||||||
@ -1221,19 +1242,6 @@ ts.filter = {
|
|||||||
ts.filter.buildSelect(table, columnIndex, updating, $header.hasClass(wo.filter_onlyAvail));
|
ts.filter.buildSelect(table, columnIndex, updating, $header.hasClass(wo.filter_onlyAvail));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
|
||||||
searching: function(table, filter, skipFirst) {
|
|
||||||
if (typeof filter === 'undefined' || filter === true) {
|
|
||||||
var wo = table.config.widgetOptions;
|
|
||||||
// delay filtering
|
|
||||||
clearTimeout(wo.searchTimer);
|
|
||||||
wo.searchTimer = setTimeout(function() {
|
|
||||||
ts.filter.checkFilters(table, filter, skipFirst );
|
|
||||||
}, wo.filter_liveSearch ? wo.filter_searchDelay : 10);
|
|
||||||
} else {
|
|
||||||
// skip delay
|
|
||||||
ts.filter.checkFilters(table, filter, skipFirst);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user