jQuery 1.6.2替换文本不起作用

时间:2011-10-05 14:11:07

标签: jquery

我有一些jQuery用于在搜索框中设置默认文本,当用户进入搜索框时删除文本,然后如果搜索框失去焦点则再次添加文本。代码如下:

//global vars
var searchBox = jQuery("#plc_lt_mpHeaderContent_SiteSearch_txtWord");
var searchBoxDefaultText = "Keyword, Title, Name";

searchBox.val('Keyword, Title, Name');

//searchbox show/hide default text if needed
searchBox.focus(function () 
{

    if (jQuery(this).attr("value") == searchBoxDefaultText) jQuery(this).attr("value", "");

});

searchBox.blur(function () 
{

    if (jQuery(this).attr("value") == "") jQuery(this).attr("value", searchBoxDefaultText);

});

此代码在jQuery(document).ready(function())中启动。问题是这在jQuery 1.4.2中按预期工作,但是当我在jQuery 1.6.2中尝试相同的代码时,它不起作用。我想知道我需要做些什么来使它符合1.6.2。非常感谢任何帮助。

谢谢

4 个答案:

答案 0 :(得分:1)

将.attr()更改为.val()

searchBox.focus(function () 
{
 if ($(this).val() == searchBoxDefaultText)
 {
  $(this).val();
 }
});

searchBox.blur(function () 
{
 if ($(this).val()=="")
  {
   $(this).val(searchBoxDefaultText);
  }
});

答案 1 :(得分:1)

Jquery 1.6更新改变了attr的工作方式。现在你必须改用道具。发布说明http://blog.jquery.com/2011/05/03/jquery-16-released/

更好的方法是使用.val(),如下所示:

searchBox.focus(function () 
{

    if (jQuery(this).val() == searchBoxDefaultText) jQuery(this).val("");

});

searchBox.blur(function () 
{

    if (jQuery(this).val() == "") jQuery(this).val(searchBoxDefaultText);

});

答案 2 :(得分:0)

通常,您说jQuery(this).val("")而不是jQuery(this).attr("value", "") - 这是否是您的问题,我不知道。

答案 3 :(得分:0)

而不是 jQuery(this).attr(“value”),我会使用:

jQuery(this).val();                        // for getting value
jQuery(this).val(searchBoxDefaultText);    // for setting value

也就是说,我还建议您查看HTML5的占位符属性(针对兼容的浏览器),然后为非HTML5浏览器添加jQuery.hint(或任何类似的插件) 。不要重新发明轮子。