Javascript 当文本框第一次进入焦点时,如何清除它?

Javascript 当文本框第一次进入焦点时,如何清除它?,javascript,jquery,Javascript,Jquery,我试图在文本框第一次聚焦时清除它,仅此而已。我可以清除文本框,每当它成为焦点,但这正在成为一个问题。我只想让它在第一次聚焦时清晰 因此,当页面加载时,文本框会显示“Searchhere”--一旦用户在里面单击,“Searchhere”就会消失,文本框变为空白。用户可以继续键入他们的搜索查询 但我的代码,如下所示,只是不断清除文本框。有什么想法吗 $('input[type=text]').focus(function() { $(this).val('') }); 试试这个

我试图在文本框第一次聚焦时清除它,仅此而已。我可以清除文本框,每当它成为焦点,但这正在成为一个问题。我只想让它在第一次聚焦时清晰

因此,当页面加载时,文本框会显示“Searchhere”--一旦用户在里面单击,“Searchhere”就会消失,文本框变为空白。用户可以继续键入他们的搜索查询

但我的代码,如下所示,只是不断清除文本框。有什么想法吗

    $('input[type=text]').focus(function() {
      $(this).val('')
});
试试这个。代码仅删除焦点的第一次出现


试试这个。代码只删除第一次出现的焦点。

这将清除焦点上的默认文本,并将其恢复为模糊。如果键入的新文本与默认值不同,则不再清除输入。通过点击外部并输入几次来测试它。然后键入新文本并执行相同操作

$('.text').focus(function() {
    if (this.value == this.title) {
        $(this).val("");
    }
}).blur(function() {
    if (this.value == "") {
        $(this).val(this.title);
    }
});

检查处的工作示例这将清除焦点上的默认文本,并将其恢复为模糊。如果键入的新文本与默认值不同,则不再清除输入。通过点击外部并输入几次来测试它。然后键入新文本并执行相同操作

$('.text').focus(function() {
    if (this.value == this.title) {
        $(this).val("");
    }
}).blur(function() {
    if (this.value == "") {
        $(this).val(this.title);
    }
});

检查中的工作示例,如果您只想执行一次,那么在执行之后就不再需要事件处理程序了。因此,删除事件处理程序将是最佳实践和最佳方式

$("input[type=text]").focus(function(event) {
    $(this).val("").unbind(event);
});
这样更好,因为您不会通过定义额外的变量或DOMNodes来创建开销,并且事件会被删除,因为您不再使用它

除此之外,我们建议您使用不同的选择器,因为您将在您的站点上为evey textinput应用此事件。很可能你不想要这个。我建议您使用id选择器(
input#id
)或类选择器(
input.class
)来清楚地识别此特殊文本输入。 因此,您将以以下方式结束:

$("input.clearOnFocus").focus(function(event) {
    $(this).val("").unbind(event);
});


我想,您想做一些类似于此页面顶部的搜索栏的事情。你所做的在语义上是不正确的。查看真正的内联标签

如果只想执行一次,那么在执行之后就不再需要事件处理程序了。因此,删除事件处理程序将是最佳实践和最佳方式

$("input[type=text]").focus(function(event) {
    $(this).val("").unbind(event);
});
这样更好,因为您不会通过定义额外的变量或DOMNodes来创建开销,并且事件会被删除,因为您不再使用它

除此之外,我们建议您使用不同的选择器,因为您将在您的站点上为evey textinput应用此事件。很可能你不想要这个。我建议您使用id选择器(
input#id
)或类选择器(
input.class
)来清楚地识别此特殊文本输入。 因此,您将以以下方式结束:

$("input.clearOnFocus").focus(function(event) {
    $(this).val("").unbind(event);
});


我想,您想做一些类似于此页面顶部的搜索栏的事情。你所做的在语义上是不正确的。查看真正的内联标签

大多数已发布的答案都解决了这个问题。 现在我发布了另一个利用有用jQuery函数“one”的

描述:将处理程序附加到元素的事件。这个 每个元素最多执行一次处理程序


已经发表的大多数答案都解决了这个问题。 现在我发布了另一个利用有用jQuery函数“one”的

描述:将处理程序附加到元素的事件。这个 每个元素最多执行一次处理程序


天才!非常感谢。我真的需要跳出框框思考这件事:/这种情况下的选择器是犯罪的。保证以后会出问题。天才!非常感谢。我真的需要跳出框框思考这件事:/这种情况下的选择器是犯罪的。保证以后会出现问题。我会根据焦点上的默认值测试该值,如果该值是默认值,则也会将其清空,这样,您就可以在不实际提供内容的情况下为用户提供默认值。此外,您的“input[type=text]”捕获的匹配太多了,不太有用。我会根据焦点上的默认值测试该值,如果该值为默认值,则也会将其清空,这样,您似乎给了用户一个默认值,而没有实际提供内容。此外,您的“input[type=text]”捕获的匹配太多,不太有用。他的问题是只触发一次事件。我不知道你到底有什么问题。问题不是关于“最佳选择器和事件绑定实践”。重新编辑了我的评论,还没有完成,并且意外地按下了enter键。嗯,是的,这显然是不对的。想象OP比你的答案更聪明也不是答案。也许他们没有/没有注意到这个问题。修正它,不要和我争论(有人评论你的答案)。好的,你是对的-在我发布最后一条评论时没有看到你的最后一条评论。你正在取得进展。只是一个提示,你可以编辑和改进OP的内容,只要你能解释你为什么这么做。如果你觉得自己是对的,你不必害羞——如果你不是,有人会指出任何问题,这将提高你对未来的洞察力。他的问题是关于只启动一次活动。我不知道你到底有什么问题。问题不是关于“最佳选择器和事件绑定实践”。重新编辑了我的评论,还没有完成,并且意外地按下了enter键。嗯,是的,这显然是不对的。想象OP比你的答案更聪明也不是答案。也许他们没有/没有注意到这个问题。修正它,不要和我争论(有人评论你的答案)。好的,你是对的-在我发布最后一条评论时没有看到你的最后一条评论。你正在取得进展。只是一个提示,你可以编辑和改进OP的内容,只要你能解释你为什么这么做。如果你觉得自己是对的,你不必害羞——如果你不是,有人会指出任何问题,