我有输入文本登录/密码,我使用我在输入内显示的标签,当输入获得焦点时,标签被隐藏,当输入模糊时,如果值不等于“”标签再次显示,使用focus()/ blur()函数效果很好,但是,我怎么能处理浏览器自动填充,因为change()函数不起作用,因为永远不会获得焦点,是有办法处理这个?
我不想通过将其设置为关闭来禁用自动完成功能,我认为,它对用户来说并不是非常友好。
我想使用计时器,每个 n ms,但我想使用更好的方法。
有什么想法吗?
这是我的剧本:
$('#form-login input.inputbox').focus(
function()
{
$('#label-' + $(this).attr('id')).addClass('hidden');
}
);
$('#form-login input.inputbox').blur(
function()
{
if ($(this).val() == "")
{
$('#label-' + $(this).attr('id')).removeClass('hidden');
}
}
);
答案 0 :(得分:1)
有几个jQuery插件已经这样做了;我推荐this one。
要回答您的问题(如果您真的想重新发明轮子),您是在谈论自动完成还是保存登录?
如果您正在谈论自动完成,那么只有在重点关注(AFAIK)时才会发生这种情况,因此您无需担心。
如果您正在讨论已保存的登录信息,我相信它们会在页面加载完成之前或之后填写,因此您可以检查页面加载(或者在{1}}之后的1秒钟)是否该字段是空的。
HTML5有一个新的placeholder
attribute来执行此操作,但浏览器尚不支持它。
顺便说一下,您可以使用以下选择器代替为每个标签指定ID:
setTimeout
答案 1 :(得分:-1)
之前我做过这个并使用了window.onload
。我建议创建两个处理'焦点'和'模糊'功能的函数,你可以从几个地方调用它们。
function inputFocus( elem )
{
// hide the label
}
function inputBlur( elem )
{
// show the label
}
window.onload = function()
{
// get username/password values first
if ( username.length > 0 ) {
// call inputFocus with jQuery object
}
if ( password.length > 0 ) {
// call inputFocus with jQuery object
}
}