Mic*_*ael 16 php jquery datatables special-characters html-entities
我在我的应用程序中使用jQuery DataTables插件,我的许多表行和过滤器都有特殊字符,特别是其中的&符号(&).当我尝试过滤这些列时,所有记录都会消失,并显示"找不到匹配的记录".
我已经尝试编码(即htmlspecialchars)和解码(即htmlspecialchars_decode)字符串,然后将它们打印到页面上,但似乎都没有工作.
示例:http://jsfiddle.net/gkdcZ/3/
任何想法为什么会发生这种情况,以及我如何解决它?
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>
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
$("#filter_col_1").change( function() {
$('#results').dataTable().fnFilter(
'\\b' + $("#filter_col_1").val() + '\\b',
1,
true,
false
);
} );
Run Code Online (Sandbox Code Playgroud)
更新#1: 问题似乎仅在限制列时发生.请参阅DataTables API.参数设置为"null"时工作正常.http://jsfiddle.net/gkdcZ/4/
更新#2: 更近一点.添加一个替换HTML实体的函数适用于某些字符(即&符号),但不适用于其他字符(即感叹号和问号).见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, '"');
}
Run Code Online (Sandbox Code Playgroud)
尝试这个
$('#results').dataTable().fnFilter(
$("#filter_col_1").val(),
null,
true
);
Run Code Online (Sandbox Code Playgroud)
将其设置为过滤所有列,现在可以使用...
| 归档时间: |
|
| 查看次数: |
8226 次 |
| 最近记录: |