Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设置搜索字段的默认值-请帮助!_Javascript_Jquery_Textfield - Fatal编程技术网

Javascript 设置搜索字段的默认值-请帮助!

Javascript 设置搜索字段的默认值-请帮助!,javascript,jquery,textfield,Javascript,Jquery,Textfield,我正在尝试为搜索字段设置默认值。其思想是,搜索字段的值为“Search”,直到用户点击它,那么它应该是空的。此外,只要它是“blank”(值为“Search”),它就应该具有类“.blank” 我试过这个 <input autocomplete="off" class="" id="searchq" name="searchq" onblur="if (this.value == '') { this.value='Search'; jQuery(this).addClass('blank

我正在尝试为搜索字段设置默认值。其思想是,搜索字段的值为“Search”,直到用户点击它,那么它应该是空的。此外,只要它是“blank”(值为“Search”),它就应该具有类“.blank”

我试过这个

<input autocomplete="off" class="" id="searchq" name="searchq" onblur="if (this.value == '') { this.value='Search'; jQuery(this).addClass('blank'); };" onfocus="if (this.value == 'Search') { this.value=''; jQuery(this).removeClass('blank'); };" type="text" value="" />

到目前为止,它还可以工作,但当我加载站点时,该字段只是空的。我必须先单击字段内部,然后单击页面上的某个位置,才能使效果生效

我想这和onBlur有关。有什么想法吗


谢谢

我发现了问题,我的错误:当用户单击其他地方时,会调用onBlur。仅允许标记主体和框架集使用onLoad。解决方案是在服务器端的某个位置设置默认值(对于我来说,如果没有提交搜索词,则在应用程序\控制器中)


无论如何谢谢你

模糊是指当一个字段失去焦点时,它不能失去焦点,直到它有焦点开始,因此您需要在字段中单击,然后单击“出”以查看它的工作情况。您是否尝试过将类默认设置为.blank

<input autocomplete="off" class="blank" ....

这称为水印。请参见示例

只需将默认值“Search”硬编码,如中所示

<input ... type="text" value="Search" />

听起来您只需要直接在输入标记中将初始值设置为
搜索
,如下所示:

<input autocomplete="off" class="blank" id="searchq" name="searchq" onblur="if (this.value == '') { this.value='Search'; jQuery(this).addClass('blank'); };" onfocus="if (this.value == 'Search') { this.value=''; jQuery(this).removeClass('blank'); };" type="text" value="Search" />


注意,我们还将初始类设置为
blank

这是我用来做这件事的一个片段。可能有更简单的方法,但这是可行的。任何具有.cleardefault类的项在第一次鼠标悬停时都将清除其值。任何带有.setcleardefault类的项都将清除默认值,如果用户没有在框中放入任何内容,则在鼠标悬停时将其重置为默认值

function ClearDefault(item) {
    // clear the default value of a form element
    if (item.defaultValue == undefined)
        item.defaultValue = item.value;
    if (item.defaultValue == item.value)
        item.value = '';
} // ClearDefault

function SetDefault(item) {
    // if item is empty, restore the default value
    if (item.value == '')
        item.value = item.defaultValue;
} // SetDefault

$(document).ready(function() {
    $(".cleardefault")
        .mouseover(function(){
            ClearDefault(this);
        })
    $(".setcleardefault")
        .mouseover(function(){
            ClearDefault(this);
        })
        .mouseout(function(){
            SetDefault(this);
        });
    /*
    */
});

另一个想法是在输入类型中放置占位符: (注意这是HTML5。)

这样,文本字段将显示为灰色文本颜色:此处为默认文本。单击后,它将删除文本并替换为当前文本,当文本为空时,它将返回