1

我想知道是否有一种简单的方法使用 javascript(包括我们在网站上使用的 JQuery)将描述性文本放入文本输入中,直到用户单击它来输入他们自己的文本。

例如,我想将“搜索”一词放在文本输入中(最好是比实际输入更浅的颜色),直到用户单击输入,当它消失并允许他们输入搜索词时。

不过,我实际上不想让“搜索”这个词成为文本输入的值,因为用户可以搜索“搜索”这个词有点重要。

我正在考虑绝对定位一个 <p> 元素,并在输入上使用单词搜索并在单击它(或输入)时将其隐藏。

你怎么看?这是可怕的误导吗?

4

8 回答 8

9

我最近遇到了jQuery Form Example 插件,它可以满足您的需求。该项目的 github 页面在这里。使用该插件,您可以显示一个占位符值,该值将在点击时消失,只需:

$('input#search').example('Search');

于 2009-03-03T17:03:38.210 回答
4

您可以将搜索输入的初始值设置为“搜索”,然后添加一个 onClick 侦听器将其移除。

$("input.search-term").one("click", function() { $(this).removeAttr("value"); });

它不会影响用户搜索“搜索”的能力。这是一种比尝试在输入上修改 a<p><label>元素更简洁的方法。

编辑:你是绝对正确的 - 删除每次点击的价值是糟糕的用户体验。这就是我快速回答的原因。:) 更新为仅删除初始值。

于 2009-03-03T16:36:44.453 回答
3

你可能想看看这个:http: //www.newmediacampaigns.com/page/nmcformhelper

基本上,HTML 5支持输入元素的占位符属性:

<input type="text" placeholder="Your browser supports placeholder text" size=38>

WebKit(Chrome 和 Safari)现在支持这个,但是对于 Firefox 和 IE 等其他浏览器,当浏览器不支持 HTML 5 功能时,您可以使用此脚本模拟使用 Javascript 的效果。

于 2010-02-22T06:10:03.933 回答
1

多年来,一直有一个流行的“项目”,称为labels.js,最初由旧的 youngpup.net 的 Aaron Boodman 编写。这个想法仍然存在,甚至存在一个jQuery 版本(演示 #4)。

于 2009-03-03T16:38:19.270 回答
1

不过,我实际上不想让“搜索”这个词成为文本输入的值,因为用户可以搜索“搜索”这个词有点重要。

在这种情况下,您可以在文本输入上使用背景图像。您可以在 CSS 中定义 :focus 不应该有背景,而 unfocused 应该有它。即使禁用了 javascript,此解决方案也有效。

更新:测试和使用 FF、Opera 和 Chrome 但不是 IE,因为 IE 不支持:focus,但 IE 支持背景图像,所以如果文本是浅灰色的应该不是问题。而且您始终可以使用 jquery 来更改输入字段应具有的分类。

于 2009-03-03T17:03:57.007 回答
1

不久前我正在寻找这个解决方案并遇到了这个

/**
* @author Remy Sharp
* @url http://remysharp.com/2007/01/25/jquery-tutorial-text-box-hints/
*/

(function ($) {

$.fn.hint = function (blurClass) {
  if (!blurClass) { 
    blurClass = 'blur';
  }

  return this.each(function () {
    // get jQuery version of 'this'
    var $input = $(this),

    // capture the rest of the variable to allow for reuse
      title = $input.attr('title'),
      $form = $(this.form),
      $win = $(window);

    function remove() {
      if ($input.val() === title && $input.hasClass(blurClass)) {
        $input.val('').removeClass(blurClass);
      }
    }

    // only apply logic if the element has the attribute
    if (title) { 
      // on blur, set value to title attr if text is blank
      $input.blur(function () {
        if (this.value === '') {
          $input.val(title).addClass(blurClass);
        }
      }).focus(remove).blur(); // now change all inputs to title

      // clear the pre-defined text when form is submitted
      $form.submit(remove);
      $win.unload(remove); // handles Firefox's autocomplete
    }
  });
};

})(jQuery);


$(function(){ 
    // find all the input elements with title attributes
    $('input[title!=""]').hint();
});
于 2009-03-03T22:21:27.417 回答
0

我会在 jQuery 中做这样的事情:

$("input.searchterm").click(function() { 
  var $input = $(this);
  if ($input.val() == "enter search term") $input.val("");
};

这样用户在再次点击时不会丢失他们之前输入的内容。只有当它是您分配给输入字段的默认值时,该值才会被清除。

于 2009-03-03T16:45:45.600 回答
0

作为参考,这种技术通常称为水印

于 2009-03-03T22:14:37.650 回答