Sto utilizzando il plug-in jQuery DataTables nella mia applicazione e molte delle mie righe e dei miei filtri contengono caratteri speciali, in particolare e commerciali (&). Quando provo a filtrare su queste colonne, tutti i record scompaiono e visualizza "nessun record corrispondente trovato".Come filtrare i risultati con caratteri speciali usando il plugin jQuery DataTables?
Ho provato la codifica (cioè htmlspecialchars) e la decodifica (cioè htmlspecialchars_decode) delle stringhe prima che vengano stampate sulla pagina, ma nessuna sembra funzionare.
Esempio: http://jsfiddle.net/gkdcZ/3/
Tutte le idee perché questo potrebbe accadere, e come posso risolvere il problema?
HTML:
<select id="filter_col_1" name="filter_col_1">
<option value="">Select</option>
<option value="A&B">A&B</option>
<option value="C">C</option>
<option value="D">D</option>
</select>
<tr>
<td>A&B</td>
<td>Jones, Brandon</td>
<td>01/02/2003</td>
</tr>
JavaScript:
$("#filter_col_1").change(function() {
$('#results').dataTable().fnFilter(
'\\b' + $("#filter_col_1").val() + '\\b',
1,
true,
false
);
});
UPDATE # 1: problema sembra accadere solo quando si limita la colonna. Vedi DataTables API. Funziona bene quando il parametro è impostato su "null". http://jsfiddle.net/gkdcZ/4/
UPDATE # 2: Un po 'più vicino. L'aggiunta di una funzione per sostituire le entità HTML funziona per determinati caratteri (ad esempio e commerciali), ma non funziona per altri caratteri (ad esempio punti esclamativi e punti interrogativi). Vedere http://jsfiddle.net/cz6Bs/4/
'\\b' + htmlEntities($('#filter_col_1').val()) + '\\b'
function htmlEntities(str) {
return String(str).replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"');
}
si può sostituire la 'e' con 'e'? così: str_replace ("&", "and", $ input); – azzy81
Non capisco a cosa stai provando. Puoi pubblicare il tuo codice Javascript per favore? – pomeh
Appena aggiunto in JavaScript sopra. Sto cercando di filtrare i risultati della ricerca in base a una selezione di caselle a discesa. La mia casella a discesa contiene alcuni elementi con caratteri speciali, il che causa il problema. – Michael