mirror of
https://github.com/DataTables/DataTables.git
synced 2025-03-15 16:29:16 +01:00
Dev: Refactor the filtering HTML creation function - save 138 bytes on
file size
This commit is contained in:
parent
3795134856
commit
c31d3a1447
@ -1 +1 @@
|
||||
9fd084bdae8fa642638c88f15592e3322548c328
|
||||
2e8c9ddd5aaf32c42462cef8cdb620654d186068
|
||||
|
@ -226,6 +226,9 @@ table.dataTable.sort-column.hover tbody tr.even:hover.selected > .sorting_3 {
|
||||
float: right;
|
||||
text-align: right;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_filter input {
|
||||
margin-left: 0.5em;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_info {
|
||||
clear: both;
|
||||
float: left;
|
||||
|
@ -219,6 +219,9 @@ table.dataTable.sort-column.hover tbody tr.even:hover.selected > .sorting_3 {
|
||||
float: right;
|
||||
text-align: right;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_filter input {
|
||||
margin-left: 0.5em;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_info {
|
||||
clear: both;
|
||||
float: left;
|
||||
|
101
media/js/jquery.dataTables.js
vendored
101
media/js/jquery.dataTables.js
vendored
@ -2187,81 +2187,66 @@
|
||||
* @param {object} oSettings dataTables settings object
|
||||
* @memberof DataTable#oApi
|
||||
*/
|
||||
function _fnFeatureHtmlFilter ( oSettings )
|
||||
function _fnFeatureHtmlFilter ( settings )
|
||||
{
|
||||
var oPreviousSearch = oSettings.oPreviousSearch;
|
||||
var classes = settings.oClasses;
|
||||
var tableId = settings.sTableId;
|
||||
var previousSearch = settings.oPreviousSearch;
|
||||
var features = settings.aanFeatures;
|
||||
|
||||
// @todo Surely this can be cleaned up!?!
|
||||
var klass = 'class="'+oSettings.oClasses.sFilterInput+'"';
|
||||
var sSearchStr = oSettings.oLanguage.sSearch;
|
||||
sSearchStr = (sSearchStr.indexOf('_INPUT_') !== -1) ?
|
||||
sSearchStr.replace('_INPUT_', '<input type="search" />') :
|
||||
sSearchStr==="" ?
|
||||
'<input type="search" '+klass+' />' :
|
||||
sSearchStr+' <input type="search" '+klass+'/>';
|
||||
var str = settings.oLanguage.sSearch;
|
||||
str = str.match(/_INPUT_/) ?
|
||||
str.replace('_INPUT_', '<input type="search" />') :
|
||||
str+'<input type="search" class="'+classes.sFilterInput+'"/>';
|
||||
|
||||
var nFilter = document.createElement( 'div' );
|
||||
nFilter.className = oSettings.oClasses.sFilter;
|
||||
nFilter.innerHTML = '<label>'+sSearchStr+'</label>';
|
||||
if ( !oSettings.aanFeatures.f )
|
||||
{
|
||||
nFilter.id = oSettings.sTableId+'_filter';
|
||||
}
|
||||
var filter = $('<div/>', {
|
||||
'id': ! features.f ? tableId+'_filter' : null,
|
||||
'class': classes.sFilter
|
||||
} )
|
||||
.append( $('<label/>' ).append( str ) );
|
||||
|
||||
var jqFilter = $('input[type="search"]', nFilter);
|
||||
var jqFilter = $('input[type="search"]', filter)
|
||||
.val( previousSearch.sSearch.replace('"','"') )
|
||||
.bind( 'keyup.DT search.DT input.DT paste.DT cut.DT', function(e) {
|
||||
/* Update all other filter input elements for the new display */
|
||||
var n = features.f;
|
||||
var val = !this.value ? "" : this.value; // mental IE8 fix :-(
|
||||
|
||||
// Store a reference to the input element, so other input elements could be
|
||||
// added to the filter wrapper if needed (submit button for example)
|
||||
nFilter._DT_Input = jqFilter[0];
|
||||
/* Now do the filter */
|
||||
if ( val != previousSearch.sSearch ) {
|
||||
_fnFilterComplete( settings, {
|
||||
"sSearch": val,
|
||||
"bRegex": previousSearch.bRegex,
|
||||
"bSmart": previousSearch.bSmart ,
|
||||
"bCaseInsensitive": previousSearch.bCaseInsensitive
|
||||
} );
|
||||
|
||||
jqFilter.val( oPreviousSearch.sSearch.replace('"','"') );
|
||||
jqFilter.bind( 'keyup.DT search.DT input.DT paste.DT cut.DT', function(e) {
|
||||
/* Update all other filter input elements for the new display */
|
||||
var n = oSettings.aanFeatures.f;
|
||||
var val = this.value==="" ? "" : this.value; // mental IE8 fix :-(
|
||||
|
||||
/* Now do the filter */
|
||||
if ( val != oPreviousSearch.sSearch )
|
||||
{
|
||||
_fnFilterComplete( oSettings, {
|
||||
"sSearch": val,
|
||||
"bRegex": oPreviousSearch.bRegex,
|
||||
"bSmart": oPreviousSearch.bSmart ,
|
||||
"bCaseInsensitive": oPreviousSearch.bCaseInsensitive
|
||||
} );
|
||||
|
||||
// Need to redraw, without resorting
|
||||
oSettings._iDisplayStart = 0;
|
||||
_fnDraw( oSettings );
|
||||
}
|
||||
} );
|
||||
|
||||
jqFilter
|
||||
.attr('aria-controls', oSettings.sTableId)
|
||||
// Need to redraw, without resorting
|
||||
settings._iDisplayStart = 0;
|
||||
_fnDraw( settings );
|
||||
}
|
||||
} )
|
||||
.bind( 'keypress.DT', function(e) {
|
||||
/* Prevent form submission */
|
||||
if ( e.keyCode == 13 )
|
||||
{
|
||||
if ( e.keyCode == 13 ) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
);
|
||||
} )
|
||||
.attr('aria-controls', tableId);
|
||||
|
||||
// Update the input elements whenever the table is filtered
|
||||
$(oSettings.nTable).on( 'filter.DT', function () {
|
||||
$(settings.nTable).on( 'filter.DT', function () {
|
||||
// IE9 throws an 'unknown error' if document.activeElement is used
|
||||
// inside an iframe or frame...
|
||||
try {
|
||||
// IE9 throws an 'unknown error' if document.activeElement is used
|
||||
// inside an iframe or frame...
|
||||
if ( this._DT_Input !== document.activeElement ) {
|
||||
jqFilter.val( oPreviousSearch.sSearch );
|
||||
if ( jqFilter[0] !== document.activeElement ) {
|
||||
jqFilter.val( previousSearch.sSearch );
|
||||
}
|
||||
}
|
||||
catch ( e ) {
|
||||
jqFilter.val( oPreviousSearch.sSearch );
|
||||
}
|
||||
catch ( e ) {}
|
||||
} );
|
||||
|
||||
return nFilter;
|
||||
return filter[0];
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user