2017-07-10 13 views
0

私はグローバル検索inputを持っており、ユーザーが入力を開始すると、その結果が隠されたdivが表示されます。入力のキーアップでDIVを表示するにはどうすればよいですか?

キーアップ時に表示するdivを取得できません。ここに私のdivザッツ私fiddle

です:

<div class=" container-fluid parent"> 
    <input class="form-control" placeholder="Search ..." id="GlobalSearchInput" style="padding:10px;"> 
    <div class="" id="showSearchDiv" style="display:none;margin-top:10px;height:450px;background-color:red;"></div> 
    </div 



    $(document).ready(function() { 

    $("#GlobalSearchInput").keyup(function() { 
     function showGlobalSearch() { 
     var x = document.getElementById('showSearchDiv'); 
     if (x.style.display === 'none') { 
      x.style.display = 'block'; 
     } else { 
      x.style.display = 'none'; 
     } 
     } 
    }); 

    }); 
+0

onkey機能をチェックし、このチェックには、この原因を機能を使用する必要が終了タグ を使用する必要がなく、主な問題は何ですか? –

+1

あなたはあなたのキーアップ関数 'showGlobalSearch'内に定義された関数を持っていません。 –

+1

また、上記が解決されたとしても、現在のコードは最初の文字のdiv、2番目の隠し、3番目の隠し、4番目の隠しを表示します。あなたの期待される行動は何ですか? –

答えて

1

です。

また、コード内のどこでも同じコードを必要としない限り、関数を定義することはここでは役に立ちません。

ここで修正されたコードです。

$(document).ready(function() { 
 
    $("#GlobalSearchInput").keyup(function() { 
 
    var x = document.getElementById('showSearchDiv'); 
 
    if($(this).val() == "") { 
 
     x.style.display = 'none'; 
 
    } else { 
 
     x.style.display = 'block'; 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class=" container-fluid parent"> 
 
    <input class="form-control" placeholder="Search ..." id="GlobalSearchInput" style="padding:10px;"> 
 
    <div class="" id="showSearchDiv" style="display:none;margin-top:10px;height:450px;background-color:red;"></div> 
 
</div>

+0

そのヒントをありがとう。しかし、このdivブロックは、オンとオフのように点滅しています。入力ボックスが空でない限り表示されます。 – Cyber

+0

@Cyber​​回答を更新しました。 –

+0

それは一つです。どうもありがとう。 – Cyber

1

Working Demo

ユーザーがそれをすべき入力を開始するとき、私はグローバル検索入力を持ち、 それらの結果との隠されたdiv要素を表示します

いつでもユーザーが何かを入力しているときにdivを表示し、何も入力されていなければ非表示にする必要があります。以下の方法を試してみてください。

  1. すべてのキーアップで、入力値の長さを確認します。
  2. 0より大きい場合は検索結果のボックスを表示し、それ以外の場合は非表示にします。以下は

あなたkeyupイベントハンドラで使用すると、呼び出されませんshowGlobalSearchを定義するので、これはサンプルコード

$(document).ready(function() { 

$("#GlobalSearchInput").keyup(function() { 
    if ($.trim($(this).val()).length) { 
    $('#showSearchDiv').show(); 
    } else { 
    $('#showSearchDiv').hide(); 
    } 
}); 
}); 
1

2つの問題:

  • あなたは関数を入れ子にしています。 function showGlobalSearch() {(対応する})の行を削除してください。
  • すべてのキーアップの表示を切り替えます。最初のキーアップ後に表示することをお勧めします。入力の長さをチェックしてください。

また、私は可能な限りjQueryを使用し、DOMにアクセスするために他の手段と混ぜることは推奨しません(したがって、getElementByIdはありません)。

結果:

$(document).ready(function() { 
 
    $("#GlobalSearchInput").keyup(function() { 
 
    var div = $('#showSearchDiv'); 
 
    if ($("#GlobalSearchInput").val().length > 0) { 
 
     div.show(); 
 
    } else { 
 
     div.hide(); 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="container-fluid parent"> 
 
    <input class="form-control" placeholder="Search ..." id="GlobalSearchInput" style="padding:10px;"> 
 
    <div class="" id="showSearchDiv" style="display:none;margin-top:10px;height:450px;background-color:red;"></div> 
 
</div>

+0

これも同様です。ありがとう、 – Cyber

1

このコードとあなたのコードをチェックし、いくつかの問題 1を持っています。すでに

$(document).ready(function() { 
 
    $("#GlobalSearchInput").keyup(function() { 
 
var input_value = document.getElementById('showSearchDiv'); 
 
// when value is not empty then div will show and 
 
//when input value empty then div will hide 
 
if($(this).val() == "") { 
 
    input_value.style.display = 'none'; 
 
} else { 
 
    input_value.style.display = 'block'; 
 
} 
 
}); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class=" container-fluid parent"> 
 
    <input class="form-control" placeholder="Search ..." id="GlobalSearchInput" style="padding:10px;"> 
 
    <div class="" id="showSearchDiv" style="display:none;margin-top:10px;height:450px;background-color:red;"></div> 
 
</div>

関連する問題