我正试图通过css转换来获取一个显示和隐藏的输入字段。我已经弄清楚了css和html部分。我希望输入在单击div时切换显示/隐藏。如果输入失去焦点(模糊),我也希望它隐藏起来。
除了第二次单击div之外,它几乎可以正常工作。模糊在单击事件之前激发。因此,blur事件删除了类,而click事件重新应用了类。我相信标准顺序是模糊优先。因此,它基本上是按预期工作的,只是不是所期望的。
有效的状态
- 单击div,输入显示应用焦点,以便用户可以开始键入
- 在输入之外单击,输入将隐藏移除焦点
不工作的状态
- 再次单击div以隐藏输入。模糊事件由于您在输入外部单击而触发。并且,单击事件会重新应用该类。所以,它开始隐藏,但随后又暴露了出来
我相信有办法做到这一点。我的脑子此刻很乱。感谢您的帮助。
$('.clickme').on({
click: function() {
$('.wrapper').toggleClass("left");
if ( $(".wrapper").hasClass("reveal") ) {
$('.large input').focus();
}
}
});
$('.large input').on({ blur: function() {
$('.wrapper').removeClass("reveal");
}
});
如果模糊在点击前触发,您可以在模糊处理程序中防止事件冒泡:
event.stopPropagation()