質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.43%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

1260閲覧

ハンバーガーメニュー内の検索フォームをクリックするとハンバーガーメニューが閉じてしまう

HisaoAndo

総合スコア14

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/11/01 03:21

【現状】
ハンバーガーメニュー内の検索フォームをクリックするとハンバーガーメニューが閉じてしまい、フォーム内のテキスト入力ができません。

【やりたい事】
ハンバーガーメニュー内の検索フォームをクリックしてテキスト入力を可能にしたいです。

【対象のウェブサイト】
https://himi-biz.net/

【デバイス】
iPhone11

JS初心者です。
もしよろしければ、よろしくお願いいたします。

HTML

1<div class="drawer-overlay"></div> 2 <div class="drawer-navigation"> 3 <div class="drawer-navigation-content"> 4 <?php businesspress_main_navigation(); ?> 5 <?php if ( get_theme_mod( 'businesspress_enable_top_bar' ) ) : ?> 6 <?php businesspress_header_social_link(); ?> 7 <?php endif; ?> 8 <div class="nav-contact for-sp"> 9 <span><a href="https://himi-biz.net/contact/">ご予約・お問い合わせ</a></span> 10 <span id="search-box"> 11 <form method="get" action="<?php bloginfo( 'url' ); ?>" class="search_container"> 12 <input name="s" id="s" type="text" size="25" placeholder="サイト内を検索" /> 13 <input id="submit" type="submit" value="&#xf002" /> 14 </form> 15 </span> 16 <ul> 17 <li class="nav-sns"><a href="https://www.facebook.com/himimachi/" target="_blank"><img src="<?php echo get_template_directory_uri(); ?>/images/snsbutton-facebook.png" srcset="<?php echo get_template_directory_uri(); ?>/images/snsbutton-facebook.png 1x, 18 <?php echo get_template_directory_uri(); ?>/images/snsbutton-facebook@2x.png 2x"></a></li> 19 <!-- <li class="nav-sns"><a href="https://www.instagram.com/himi.machi/" target="_blank"><img src="<?php echo get_template_directory_uri(); ?>/images/snsbutton-instagram.png" srcset="<?php echo get_template_directory_uri(); ?>/images/snsbutton-instagram.png 1x, 20 <?php echo get_template_directory_uri(); ?>/images/snsbutton-instagram@2x.png 2x"></a></li> --> 21 </ul> 22 </div> 23 </div><!-- .drawer-navigation-content --> 24 </div><!-- .drawer-navigation -->

JS

1( function( $ ) { 2 "use strict"; 3 4 // Set Fixed Header 5 var $cloneHeader = $('.main-header').clone().removeClass('main-header-original').addClass('main-header-clone').appendTo('body'); 6 $(window).on('load scroll', function() { 7 var value = $(this).scrollTop(); 8 if ( value > 300 ) { 9 $cloneHeader.addClass('main-header-clone-show'); 10 } else { 11 $cloneHeader.removeClass('main-header-clone-show'); 12 $('.main-header').removeClass('drawer-opened'); 13 } 14 } ); 15 16 // Set Drawer Menu 17 $('.drawer-hamburger').on('click', function() { 18 $(this).parent().parent().toggleClass('drawer-opened'); 19 } ); 20 $('.drawer-overlay').on('click',function() { 21 $('.main-header').removeClass('drawer-opened'); 22 } ); 23 24 // Set Smooth Scroll 25 $('a[href^=#]').click(function() { 26 var headerHight = $('.main-header-clone').outerHeight()+45; 27 var href = $(this).attr('href'); 28 var target = $(href == '#' || href == '' ? 'html' : href); 29 var position = target.offset().top-headerHight; 30 $('html,body').animate({scrollTop:position}, 400, 'swing'); 31 } ); 32 33 // Set Back to Top 34 $(function() { 35 $(window).scroll(function () { 36 if ($(this).scrollTop() > 300) { 37 $('.back-to-top').fadeIn(); 38 } else { 39 $('.back-to-top').fadeOut(); 40 } 41 }); 42 $('.back-to-top').click(function () { 43 $('html,body').animate({scrollTop: 0}, 600, 'swing'); 44 return false; 45 }); 46 }); 47 48 // Set Slick for Featured Posts. 49 if( 1 < $('.slick-item').length ) { 50 $('.featured-post').slick( { 51 centerMode: true, 52 centerPadding: '0', 53 dots: true, 54 mobileFirst: true, 55 slidesToShow: 1, 56 } ); 57 } 58 59 // Set Stickyfill for Sticky Sidebar. 60 var $sticky_sidebar = $('#sticky-sidebar'); 61 if( 0 < $sticky_sidebar.length ) { 62 Stickyfill.add($sticky_sidebar); 63 } 64 65 // Set Fitvids 66 $('.entry-content').fitVids(); 67 68} )( jQuery );

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

原因はこちらのコード(scrollの方)にありそうです。

javascript

1$(window).on('load scroll', function() { 2 var value = $(this).scrollTop(); 3 if ( value > 300 ) { 4 $cloneHeader.addClass('main-header-clone-show'); 5 } else { 6 $cloneHeader.removeClass('main-header-clone-show'); 7 $('.main-header').removeClass('drawer-opened'); 8 } 9} );

確認してみて欲しいのですが、おそらくiPhoneでテキストボックスをタップした時、「テキストフォームが拡大されるような動き」をしませんか?原因はこの挙動にあります。

この挙動により、scrollイベントが発生します。よって上記の$(window).on('load scroll', ...)で指定している関数が実行されます。関数内部では、「300pxより小さい時」に$('.main-header').removeClass('drawer-opened');しているので、サイドメニューが閉じてしまうわけです。
実際、300pxよりも下にスクロールしていた状態だとこの挙動は確認されませんでした。

  • サイドメニューが開いている時は閉じないようにする
  • そもそもスクロールと連動してサイドメニューを閉じないようにする
  • サイドメニュー内のテキストボックスにフォーカスが当たっている時だけ無効化する

などなど、多分対応方法は色々あると思います。ただ、みたところ、個人学習用というよりは業務での開発のようですので、仕様変更が許されるかなどの制約もあるかと思います。私の意見は参考程度でとどめて、チームのメンバーやクライアントの方と相談してどうするか検討していただけたら幸いです。

投稿2021/11/07 17:08

ukyoda

総合スコア386

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HisaoAndo

2021/11/10 04:15

ukyodaさん ご丁寧にありがとうございます! JavaScriptの部分を削除した結果、フォーム内のテキスト入力が可能になりました! しかし、フォームに入力したテキストが見えない現象が起きているので引き続きいじってみたいと思います。 ご指摘いただいております、挙動の変更については確認したいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.43%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問