我正在使用jQuery DataTables 1.10.9并尝试更改jQuery DataTables中的搜索功能,因此在开始搜索之前它至少需要3个字符。所以我读到你需要取消绑定当前的数据表搜索框,如下所示:
$(".dataTables_filter input").unbind().bind("keyup", function(){
alert("whoo");
});
所以现在它应该在我在搜索框中输入任何内容时提醒whoo
,但它只是执行正常的搜索功能。所以我的猜测是它没有得到正确的字段。我也尝试过:
$('.input[type="search"]').unbind().bind("keyup", function(){
alert("whoo");
});
但这也没有帮助。
var dt = $('#example').DataTable({
"order": [[11, "desc"]],
"processing": true,
"serverSide": true,
"ajax": "/datatables/test" + id,
"language": {
"url": "http://cdn.datatables.net/plug-ins/9dcbecd42ad/i18n/Dutch.json"
}
});
修改
我确实尝试了jQuery DataTables: Delay search until 3 characters been typed OR a button clicked
中的代码但由于我没有这样做,我发布了这个问题。
我的猜测它不起作用是它无法找到输入表单,但我无法理解为什么,所以在这里发布我的HTML也不好。
<input type="hidden" id="q" name="q" value="<?php echo $_GET['q']; ?>"/>
<table id="example" class="table table-hover" cellspacing="0" width="100%">
<?php if($_GET['k_id'] != ""){?>
<input type = "hidden" value = "<?php echo $_GET['k_id']; ?>" id = "k_id" />
<?php }elseif($_GET['w_id'] != ""){ ?>
<input type="hidden" value="<?php echo $_GET['w_id']; ?>" id="w_id"/>
<?php } ?>
<thead>
此页面用于查找数据库中当前的每个产品。 3个输入字段就在那里,所以当用户查看某个人的个人资料并且他想要查看他们要销售的产品时,它将填充变量并将其发送到数据表功能。 (这也解释了为什么+ id在ajax网址后面)
if($('#k_id').val() > 0) {
var id = "?k_id=" + $('#k_id').val();
}else if($('#w_id').val()){
var id = "?w_id=" + $('#w_id').val();
}else{
var id = "";
}
输入表单位于一个div内,其中id = example_filter和class = dataTables_filter(我上传了一张图片,但我还没有10个代表xd)。
答案 0 :(得分:4)
<强>解强>
当用户在搜索框中输入内容时,请使用以下代码禁用默认处理程序并附加您自己的事件处理程序。
$('.dataTables_filter input', dt.table().container())
.off('.DT')
.on('keyup.DT cut.DT paste.DT input.DT search.DT', function (e) {
// If the length is 3 or more characters, or the user pressed ENTER, search
if(this.value.length >= 3 || e.keyCode == 13) {
// Call the API search function
dt.search(this.value).draw();
}
// Ensure we clear the search if they backspace far enough
if(this.value === "") {
dt.search("").draw();
}
});
<强>链接强>
答案 1 :(得分:1)
好的,我知道我的问题是什么..
jquery在实际存在之前正在寻找$(&#39; .dataTables_filter输入&#39;)。而那个问题的答案就是围绕它放一个窗口。
$(this).siblings('.tile-description').css('opacity', 1);
答案 2 :(得分:0)
这应该这样做,如果输入长度是3或更多字符,它会搜索你的输入值,否则它会保留所有结果。 working jsfiddle
$('.dataTables_filter input').unbind().bind("input", function (e) {
if ($(this).val().length < 3)
dt.fnFilter("");
else
dt.fnFilter($(this).val());
});