jQuery-如何使输入值(“电子邮件”、“密码”)在失焦时重新出现
jQuery - How to make the input values ("email", "password") reappear when out of focus?
当我点击输入字段时,值"电子邮件"answers"密码"就会消失,这正是我想要的。但是,如果用户没有输入他的电子邮件/通行证,并点击其他地方,我希望"电子邮件"answers"密码"重新出现。
jQuery:
$('.login-user, .login-pass').focus(function() {
$(this).val("");
});
Html:
<input type="text" name="user" value="Email" tabindex="1" class="login-user" />
<input type="password" name="password" value="Password" tabindex="2" class="login-pass" />
谢谢。
更新:
我终于抽出时间做了一个非常简单的插件,用于在没有原生功能的浏览器上支持placeholder
属性。我已经计划了很长一段时间,我有一个项目需要它,所以…place5
(插件)自动检测本地支持,并在可以自己完成任务的浏览器上(默认情况下)不做任何事情(尽管如果你真的想使用插件,你可以覆盖它)。
原始答案:
我可能会把它作为一个可以重用的插件来做,但基本上,由于您只处理input
元素,所以它可以非常简单:
$(".login-user, .login-pass").each(function() {
$(this)
.focus(function() {
if (this.value.length === this.defaultValue) {
this.value = "";
}
})
.blur(function() {
if (this.value.length === 0) {
this.value = this.defaultValue;
}
});
});
如果用户离开字段时值为空,则使用input
元素的defaultValue
来设置value
,如果值为默认值,则在用户输入字段时清除该值。这假设您在标记中使用value="placeholder to show"
。
一个更彻底的解决方案是使用新的placeholder
属性,并使用功能检测来查看是否支持它(遗憾的是,它在IE中没有,甚至在Firefox 3.6中也没有,但我敢打赌4.0已经支持了)。我一直想做点什么。。。
您确实应该考虑做得更好,即使使用placeholder
属性,但是。。。
$('.login-user, .login-pass').each(function() {
var input = $(this);
input.focus(function() {
if ($.trim(input.val()) != this.defaultValue) {
return;
}
input.val('');
});
input.blur(function() {
if ($.trim(input.val()) != '') {
return;
}
input.val(this.defaultValue);
});
});
jsFiddle。
将解决您遇到的问题。
$('.login-user').blur(function() {
if(this.value.length == 0)
{
this.value = "Username"
}
});
这可能会有所改善,如果是的话,请告诉我。
解决任务中大部分问题的完整解决方案:
$('.login-user, .login-pass').focus(function() {
var $this = $(this);
if (!$this.data('defaultValue') || $this.data('defaultValue') == $this.val()) {
if (!$this.data('defaultValue')) {
$this.data('defaultValue', $this.val());
}
$(this).val('');
}
}).blur(function(){
var $this = $(this);
if ($this.val().length === 0) {
$this.val($this.data('defaultValue'));
}
});
使用title属性作为默认值,然后使用一个小插件就可以实现您想要的。
HTML
<input type="text" name="user" value="Email" tabindex="1" class="login-user" title="Email" />
<input type="password" name="password" value="Password" tabindex="2" class="login-pass" title="Password" />
JavaScript
(function(a){a.fn.extend({defaultVal:function(){return this.each(function(){var c;var b=a(this);c=b.attr("title");if(b.val()==""){b.val(c)}b.attr("title","");b.focus(function(){var d=a(this);if(d.val()==c){d.val("")}}).blur(function(){var d=a(this);if(d.val()==""){d.val(c)}})})}})})(jQuery);
$('.login-user,.login-pass').defaultVal();
这是的实例
这里是我的小defaultVal插件的解压缩版本(用于学习目的);)
(function ($) {
$.fn.extend({
defaultVal: function () {
return this.each(function () {
var defaultValue;
var $this = $(this);
defaultValue = $this.attr("title");
if ($this.val() == "") {
$this.val(defaultValue);
}
$this.attr("title", "");
$this.focus(function () {
var $that = $(this);
if ($that.val() == defaultValue) {
$that.val("");
}
}).blur(function () {
var $that = $(this);
if ($that.val() == "") {
$that.val(defaultValue);
}
});
});
}
});
})(jQuery);
- 使用正则表达式评估电子邮件地址时出现性能问题
- 在文本区域检查电子邮件数据时出现奇怪的jquery错误
- ASP.Net电子邮件有一个超链接应该在新窗口中打开
- 使用官方 Node.js SendGrid API 发送电子邮件时,响应 JSON 中可能出现哪些错误消息
- 通知类似于gmail中的新电子邮件
- 使用PHP和Javascript为每个用户电子邮件生成新的哈希
- 通过电子邮件提交表单时出现问题
- 发送电子邮件时出现验证错误
- Javascript:打开Outlook并向新电子邮件添加附件
- Zimbra邮件服务器 - 获取有关新传入电子邮件的信息
- Javascript:修改所有出现的电子邮件地址
- 如何在ColdFusion中验证新的电子邮件地址是否正确
- 动态字段在新的电子邮件票证OTRS 5
- 如何强制电子邮件链接打开在新的窗口
- 浏览器标签更改通知,比如当你收到新的gmail电子邮件或Twitter上的新tweet时
- 强制开始一个新的会话在谷歌分析从html电子邮件
- Regex:电子邮件验证,只允许在域名和顶级域名中间出现连字符
- 用用户位置预先填充新的电子邮件
- jQuery-如何使输入值(“电子邮件”、“密码”)在失焦时重新出现
- 发送电子邮件时出现流星错误