我有一些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。非常感谢任何帮助。
谢谢
答案 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(或任何类似的插件) 。不要重新发明轮子。