2017-09-01 39 views
2

我有一个登录表单,当您将鼠标悬停在链接上时,它将显示自己。基本上,当您悬停a时,表单将其规则更新为display: nonedisplay: block悬停自动填充建议会使元素消失

当我开始填写字段时,浏览器根据先前的输入显示建议。但是当我想要选择建议时,element将自己重新设置为display: none。我不想设置autocomplete="off"

建议显示本身
enter image description here

所有形式消失盘旋建议
enter image description here

示范

* { 
 
    box-sizing: border-box; 
 
} 
 

 
form { 
 
    display: none; 
 
} 
 

 
div:hover form { 
 
    background-color: #f1f1f1; 
 
    display: block; 
 
    padding: 15px; 
 
}
<p>Fill in a sample username and password, after that you get an fiddle error. Just reload the fiddle and then the autocomplete shows you suggestions</p> 
 

 
<div class="hover"> 
 
    <span>HOVER TO SHOW LOGIN FORM</span> 
 
    <form method="post"> 
 
    <input type="text" id="username" name="username" placeholder="username" /> 
 
    <input type="password" id="password" name="password" placeholder="password" /> 
 
    <input type="submit" name="login" value="login" /> 
 
    </form> 
 
</div>

如何防止这种行为?

+0

类将被添加你使用哪种浏览器? –

+0

你可以添加自动完成=“关闭”属性 –

+0

所有浏览器同样的问题。 IE,FF和Chrome。我不想设置自动完成=“关闭” – Red

回答

2

次尝试在我删除悬停时,焦点输入 a fiddle

$('input').blur(function() { 
    $('.wrapper').addClass('hover'); 
    }) 
    .focus(function() { 
    $('.wrapper').removeClass('hover'); 
    }); 

UPDATE
您可以添加鼠标离开也是如此,一旦悬停鼠标离开输入
updated fiddle

$('input').blur(function() { 
    $('.wrapper').addClass('hover'); 
    }) 
    .mouseleave(function() { 
    $('.wrapper').addClass('hover'); 
    }) 
    .focus(function() { 
    $('.wrapper').removeClass('hover'); 
    }); 
+0

我excerly不想用jQuery来修复它。因为即时通讯使用角度。但它似乎是它唯一的选择:( – Red

+0

@红我会尝试找到一个普通的javascript解决方案 –

+0

没有必要,我的意思是我只想用CSS实际上,我知道如何使用JavaScript修复它。使用其中任何一个但是,谢谢 – Red

0

这是一个简单的例子,虽然你需要使用一点点的js,但我不认为你没有它可以解决这个问题。

为了简单起见,我在这里使用了jquery,只是操纵了css属性,但你也可以使用vanilla js并添加一个类或类似的东西。

我还包裹在另一格形式,而周围的测试,你可能不一定需要是:

,我并没有改变显示回来时,你点击别的地方,因为说实话,那会是恼人的地狱,如果你已经点击的形式和意外点击别的地方,有它消失了....但是你可以添加,当然;)

$("form").click(()=> 
 
{ 
 
     $(".hideForm").css("display","block"); 
 
})
* { 
 
    box-sizing: border-box; 
 
} 
 

 
.hideForm { 
 
    display: none; 
 
} 
 

 
div:hover .hideForm{ 
 
    display:block; 
 
} 
 
form { 
 
    background-color: #f1f1f1; 
 
    display: block; 
 
    padding: 15px; 
 
} 
 
div form { 
 
    background-color: #f1f1f1; 
 
    display: block; 
 
    padding: 15px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<p>Fill in a sample username and password, after that you get an fiddle error. Just reload the fiddle and then the autocomplete shows you suggestions</p> 
 

 
<div class="hover"> 
 
    <span>HOVER TO SHOW LOGIN FORM</span> 
 
    <div class="hideForm"> 
 
<form method="post"> 
 
    <input type="text" id="username" name="username" placeholder="username" /> 
 
    <input type="password" id="password" name="password" placeholder="password" /> 
 
    <input type="submit" name="login" value="login" /> 
 
    </form> 
 
</div> 
 
</div>

+0

删除光标时,表单不会被隐藏。 – Roberrrt

+0

是啊,这就是为什么我写道“当我点击其他地方时,我没有改变显示[...]” – rebecca