在Jquery数据表搜索框中添加提示文本时出现问题

在Jquery数据表搜索框中添加提示文本时出现问题,jquery,text,datatable,hint,Jquery,Text,Datatable,Hint,使用诸如watermark.js之类的插件在Jquery数据表的搜索字段中添加灰显的提示文本不是一个选项,我必须自定义编写它。我就快到了,但我面临着这个小而奇怪的问题,下面的代码片段将对此进行解释 function toggleHintText() { // alert("The hint text should show up"); var textSuggest = "Please input search parameter"; var searchField =

使用诸如watermark.js之类的插件在Jquery数据表的搜索字段中添加灰显的提示文本不是一个选项,我必须自定义编写它。我就快到了,但我面临着这个小而奇怪的问题,下面的代码片段将对此进行解释

function toggleHintText()
{
    // alert("The hint text should show up"); 
    var textSuggest = "Please input search parameter";
    var searchField = $('input:text');

    searchField .attr("value", textSuggest );
    searchField .addClass("activeHint");

    searchField .focus(function() {
    if(searchField .attr("value") == textSuggest)
    {
        searchField .attr("value", "");
    }
    });

    searchField .keyup(function() {             
    if(searchField .attr("value") == "") 
    {
      searchField .addClass("activeHint");
    }
    else
    {
      searchField .removeClass("activeHint");   
    }
    });     

    searchField .blur(function() {
    if(searchField .attr("value") == "")
    {
        searchField .attr("value", hinttext);
        searchField .addClass("activeHint");
    }
    });   
} 此方法称为onload,如下所示

$(document).ready(function() {
populateTableData();
toggleHintText();
} );
===========================================================================================

我面临的问题是,如果没有方法开头的警告,提示文本不会显示在搜索框中。警报是否有利于document.ready?从document.ready调用两个方法是否会弄乱toggleHint方法?。我的要求之一是,如果用户在搜索查询后单击表行,然后单击自定义返回按钮,则保留用户输入的搜索文本,这就是为什么我必须从document.ready调用它

请提前告知并感谢

尝试使用
.queue()
.delay()
.keyup()

$(文档).ready(函数(){
var数据=$(“示例”);
data.DataTable();
$(“输入[类型=搜索]”)
.on(“键控”{
//如果输入,延迟1.2秒直到没有输入
“延迟”:1200
},功能(e){
var elem=$(本);
var update=函数更新(){
//等待1.2秒,用“提示”更新“val”
如果($.now()-e.timeStamp>e.data.delay
&&e.target.value.length>0&!/^\s/.test(e.target.value)){
var val=e.target.value.toLowerCase();
//筛选器“.DataTable().data()`
//返回第一个索引与'val'匹配的项目`
var res=$.grep(data.DataTable().data(),函数(值,键){
return val==值[0]。切片(0,val.length)。toLowerCase()
||新的RegExp(val,“i”).test(值[0])
})
//对返回的数据进行排序
.sort()
//筛选器返回数据'res',以便与'val'匹配`
.filter(函数(提示){
返回提示[0]。toLowerCase().slice(0,val.length)==val
||新RegExp(val,“i”).test(提示)
})[0];
元素值(res[0])
.css({
“颜色”:“灰色”,
“字体样式”:“斜体”
});
}否则{
返回元素队列(“更新”,更新)
}
};
变量延迟=函数延迟(下一个){
//如果在1.2秒之前输入,
//空的“更新”队列,延迟调用
//更新,直到1.2秒无输入
元素队列(“更新”,[])
要素延迟(如数据延迟,“更新”)
.队列(“更新”)。推送(更新);
返回下一个()
};
//如果是输入,就做一些事情
如果(e.target.value.length>0){
元素
.队列(“更新”,延迟)
.dequeue(“更新”)
}否则{
元素
.queue(“更新”,[])
}
}).keyup()
});

名称
位置
办公室
年龄
开始日期
薪水
名称
位置
办公室
年龄
开始日期
薪水
老虎尼克松
系统架构师
爱丁堡
61
2011/04/25
$320,800
加勒特温特斯
会计
东京
63
2011/07/25
$170,750
阿什顿考克斯
初级技术作者
旧金山
66
2009/01/12
$86,000
塞德里克·凯利
高级Javascript开发人员
爱丁堡
22
2012/03/29
$433,060
佐藤航空
会计
东京
33
2008/11/28
$162,700
布里尔·威廉姆森
集成专家
纽约
61
2012/12/02
$372,000
赫罗德·钱德勒
营业员
旧金山
59
2012/08/06
$137,500
罗娜·戴维森
集成专家
东京
55
2010/10/14
$327,900
科琳赫斯特
Javascript开发人员
旧金山
39
2009/09/15
$205,500
索尼娅·弗罗斯特
软件工程师
爱丁堡
23
2008/12/13
$103,600
杰娜·盖恩斯
办公室经理
伦敦
30
2008/12/19
$90,560
奎因·弗林
支撑导线
爱丁堡
22
2013/03/03
$342,000
查尔德·马歇尔
区域主任
旧金山
36
2008/10/16
$470,600
海莉·肯尼迪
高级市场设计师
伦敦
43
2012/12/18
$313,500
塔蒂亚娜·菲茨帕特里克
区域主任
伦敦
19
2010/03/17
$385,750
迈克尔·席尔瓦
营销设计师
伦敦
66
2012/11/27
$198,500
柏德
首席财务官(CFO)
纽约
64
2010/06/09
$725,000
格洛丽亚·利特尔
系统管理员
纽约
59
2009/04/10
$237,500
布拉德利·格里尔
软件工程师
伦敦
41
2012/10/13
$132,000
戴里奥斯
人事领导
爱丁堡
35
2012/09/26
$217,500
杰内特·考德威尔
开发领导
纽约
30
2011/09/03
$345,000
尤里浆果
首席营销官(CMO)
纽约
40
2009/06/25
$675,000
凯撒万斯
售前支持
纽约
21
2011/12/12
$106,450
多丽丝·怀尔德
营业员
西德尼
23
2010/09/20
$85,600
当归
首席执行官(CEO)
伦敦
47
2009/10/09
var searchField = $('input:text');
...
searchField.focus(function() {...});
searchField.on("focus", function(){});
$("body").on("focus", 'input:text', function(){...});