2016-07-25 7 views
0

内部にチェックボックスがあるドロップダウンメニューがあります。ユーザーが外をクリックしたときにドロップダウンを閉じたいと思います。外部をクリックするとドロップダウンメニューが表示されない

私のコードは次のとおりです。

<form> 
<div class="multiselect"> 
    <div class="selectBox" onclick="showCheckboxes()"> 
     <select> 
     </select> 
    </div> 
    <div class="checkboxes" id="checkboxes"> 
     @{ 
      if (ViewBag.DataActiveEmployee == null || ((IEnumerable<MvcApplication1.Models.ActiveUsersList>)ViewBag.DataActiveEmployee).Count() == 0) 
      { 
       //@:<h3>No records were processed.</h3> 

      } 
      else 
      { 
       foreach (var usr in ViewBag.DataActiveEmployee) 
       {     
         <label id="userName">@usr.EmployeeName</label>  
         <input class="checked" type="checkbox" name="search_emp" id="search_emp" [email protected]> 
       @: 
     } 
      } 
     } 

    </div> 
</div> 

JS

<script> 
var expanded = false; 
checkboxes.style.display = "none"; 
function showCheckboxes() { 
    var checkboxes = document.getElementById("checkboxes"); 
    if (!expanded) { 
     checkboxes.style.display = "block"; 
     expanded = true; 
    } else { 
     checkboxes.style.display = "none"; 
     expanded = false; 
    } 
} 

$('multiselect').click(function() { 
    $("#checkboxes").hide(); 
}); 

私は外に押したときに、何もないので問題には、JavaScriptの第2の機能の中にありますハプニング。

助けてください。 DOMにターゲットをクリックし、ドロップダウン自体か

$(document).on("click", function(event){ 
     var $trigger = $(".checkboxes"); 
     if($trigger !== event.target && !$trigger.has(event.target).length){ 
      $(".checkboxes").hide(); 
     }    
    }); 

としてそれが動作するはずである場合

+0

フォーム自体にonclickの属性を入れた場合はどうなりますか? – brianlmerritt

答えて

1

イベントをクリックし処理するためにevent.targetを使用してみてください:

UPDATE

$(document).on('click', '.multiselect .selectBox', function(e) { 
 
    e.stopImmediatePropagation(); 
 
    $('#checkboxes').show(); 
 
}); 
 

 
$('body').on('click', function(e) { 
 
    if (e.target.id != 'checkboxes' && $(e.target).closest('#checkboxes').length == 0) { 
 
    $('#checkboxes').hide(); 
 
    } 
 
});
#checkboxes, 
 
.multiselect { 
 
    padding:15px; 
 
    border:1px solid #d8d8d8; 
 
} 
 

 
.selectBox { display: inline; } 
 

 
#checkboxes { display:none }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
 
<div class="multiselect"> 
 
    <div class="selectBox"> 
 
     <select> 
 
     </select> 
 
    </div> 
 
    <div class="checkboxes" id="checkboxes"> 
 
     <label id="userName">Employee 1</label>  
 
     <input class="checked" type="checkbox" name="search_emp" id="emp_1" value="val_1"> 
 
     <label id="userName">Employee 1</label>  
 
     <input class="checked" type="checkbox" name="search_emp" id="emp_1" value="val_1"> 
 
    </div> 
 
</div>

+0

私はあなたが提案したものとそれが機能していないものを試しました。実際に私はこのエラーがあります** Uncaught ReferenceError:$が定義されていません**理由を理解できません – SomeAnonymousPerson

+0

この関数を呼び出すとjQueryが読み込まれますか?このメッセージは、コードが$記号(jQueryエイリアス)を認識しないことを示しています。 – kapantzak

+0

エラーはなくなりました。しかし、行動は同じです – SomeAnonymousPerson

0

チェック。

関連する問題