var se-6ren">
gpt4 book ai didi

javascript - 如果除了可见表单之外单击页面上的其他任何位置,则关闭搜索表单

转载 作者:行者123 更新时间:2023-12-03 00:49:32 25 4
gpt4 key购买 nike

当我的搜索图标被点击时,我想淡出我的搜索表单并添加焦点。如果在表单打开时单击表单以外的页面上的任何位置,我想让表单淡出。这是我的代码。目前,即使单击表单,表单也会隐藏:

<form class="form-inline align-middle d-none d-md-inline-block" action="/" role="search">
<input class="form-control" type="text" name="s" placeholder="type and tap enter" aria-label="search" value="<?php echo get_search_query(); ?>">
</form>

var searchForm = $( '.navbar form' );

// Navbar Search Toggle, hide nav menu if open
$( '.search-icon-container' ).click(function(e) {
e.stopPropagation();
searchForm.toggleClass( 'visible' );
$( '.navbar form input' ).focus();
$( '.navbar-collapse' ).removeClass( 'show' );
});

// Close search bar if anywhere else in the document is clicked other than the form
$("body:not('.navbar form')").on( 'click', function() {
if( searchForm.hasClass( 'visible' ) ) {
searchForm.toggleClass( 'visible' );
}
});

最佳答案

您已在 .navbar 内不是表单的所有正文元素上放置了一个事件监听器。在表单内部单击仍然会冒泡到正文。相反,监听正文上的点击,然后检查点击是否在表单内:

$("body").on( 'click', function(e) {
if( !$(e.target).closest('form.form-inline').length && archForm.hasClass('visible') ) {
searchForm.toggleClass( 'visible' );
}
});

您还可以在表单下方但在主体的其余部分上方使用全屏固定元素,并监听该元素的点击。

关于javascript - 如果除了可见表单之外单击页面上的其他任何位置,则关闭搜索表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53111575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com