<input type="text" name="搜索" value="搜索" id="selector"/>
$(function(){//只对chrome有效??????????
var selector=$("#selector");
var value=selector.attr("value");
selector.focus(function(){
$(this).attr("value","")
}).blur(function(){
$(this).attr("value",value);
})
})
希望当搜索框获得焦点时,清除value内容,失去焦点时,重新添加value值,但是结果只对谷歌有效,当获得焦点时ie根本没反应,不知什么情况??
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
建议你改进一下,首先应该优先使用placeholder
这个placeholder在ff、chrome等浏览器支持修改样式
然后判断一下 如果浏览器不支持placeholder(我这个例子只判断了ie8),再进行js模拟
placeholder的操作注释:
:text选择所有类型为text的input元素。
如果需要自定义样式,并且希望
placeholder在所有浏览器下表现一致,可以通过利用label标签模拟一个placeholder的样式放到输入框上,当输入框获得焦点的时候,隐藏label,当输入框失去焦点的时候,显示label。首先,你得确定是否是focus没有回调,别光看现象,要看本质(问题的根源)。
你可以在focus中调试输出,看是否执行,至少说我印象中focus在浏览器端是没有兼容性问题的。
然后,为啥要用$.attr呢,为啥不直接$.val('')呢?
最后,你这个体验是有问题的(针对实际情况),比如说我输入了内容,不小心离开了焦点,重新进入输入框输入,my god,我之前的输入被你清空了,用户会怎么看?
你是想放个预览值吧?placeholder属性不就可以了吗
表单赋值:
表单赋空值,等于清空表单里面的值:
placeholder就可以解决