2011-10-05 74 views
0

我有一些jQuery我一直用来在搜索框中设置默认文本,当用户输入搜索框时删除文本,然后再次添加文本,如果搜索盒子失去焦点。代码如下:jQuery 1.6.2替换文本不工作

//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。任何帮助是极大的赞赏。

谢谢

+0

你能更具体?什么“不起作用”?事件处理程序是否未被调用?比较结果是否不正确?该值未设置? – Malvolio

+0

重点和模糊删除/添加文本是问题,抱歉没有正确说明。我会试一试。我相信这会解决它。 –

回答

1

jQuery的1.6更新改怎么ATTR作品。现在你必须改用prop。此发行说明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); 

}); 
0

通常情况下,你说jQuery(this).val(""),而不是jQuery(this).attr("value", "") - 不管是你的问题,我不知道。

0

而不是的jQuery(这).attr( “值”),我会用:

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

这么说,我也给你推荐你看看HTML5的占位属性(兼容浏览器),然后为非HTML5浏览器添加jQuery.hint(或任何类似的插件)。不要重新发明轮子。

1

变化.attr()来.VAL()

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

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