2016-04-27 3 views
1

私はこれに対する解決法を読んだことがありますが、なんらかの理由でそれを動作させることはできません。 これをコンテキストにするには、2つのドロップダウンがあり、1つのオプションが選択されている場合は、2番目のドロップダウンでオプションを削除し、最初のドロップダウンに関連するデータでリロードします。私は実際に帆を使用していますので、下記の生のコードが含まれますJqueryはすべての選択オプションを削除します - 期待どおりに機能しません

が、しかし、私はまた、私はどちらかの作業それを得るカント静的コンテンツとJSFiddleを作成し、これはここで見つけることができます:

ドロップダウンページ

<div class="form-group" id="chainDrop"> 
    <label for="restaurantChain">What chain does it belong to?</label> 
    <select class="form-control selectpicker" id="restaurantChain" name="restaurantChain" data-live-search="true" onchange="loadRestaurants()"> 
    <% if(typeof chains != "undefined") { %> 
     <% _.each(chains, function(chain){ %> 
     <option value="<%= chain.id %>"> 
      <%= chain.name %> 
     </option> 
     <% }) %> 
      <% } %> 
    </select> 



    <p >The below will override the chain selection, and add items unique to the below restaurant in the chain</p> 
    <div class="form-group"> 
    <label> 
     <input type="checkbox" name="checkboxes" id="checkboxes-specific"> Add menu items to individual restaurants 
    </label> 
    </div> 


    <div class="form-group" id="specific"> 
    <label for="individualRestaurant">Restaurant Name(Chain Override)</label> 
    <select class="form-control selectpicker" id="individualRestaurant" name="individualRestaurant" data-live-search="true"> 
     <% if(restaurants) { %> 
     <% _.each(restaurants, function(restaurant){ %> 
      <% if(restaurant.chain) { %> 
      <option value="<%= restaurant.id %>"> 
       <%= restaurant.name %>, <%= restaurant.location %> 
      </option> 
      <% } %> 
      <% }) %> 
     <% } %> 
    </select> 
    </div> 
</div> 

機能

function loadRestaurants() { 
    var editSpecific = $('#checkboxes-specific').is(':checked'); 

    if(editSpecific){ 
    $('#individualRestaurant').find('option').remove().end(); 
    } 
} 
、10

は、私は、関数が実行され、それがあることをテストしてみたが、私はこれがそれに影響を与えている場合、なぜjQueryの

更新

イムわからないが動作していないのと困惑しますしかし、私はまた、あなたが見ることができるようにdivを

$(function() { 
    $('[name="checkboxes"]').on('change', function() { 
    $('#independantDrop').toggle($('#checkboxes-isindependant').is(':checked')); 
    $('#chainDrop').toggle($('#checkboxes-ischain').is(':checked')); 
    $('#specific').toggle($('#checkboxes-specific').is(':checked')); 
    }).trigger('change'); 
}); 

の表示を切り替えるためにjqueryの機能を使用しています、皮革上記のコードでは、私のチェックボックスは/ specificのdivの隠蔽を解除します。私はまた、上記のすべての私のコードは/私はセレクタをテストするために私の関数に以下のコードをも追加されている多くの

を隠蔽を解除する隠す前に、チェックボックスのチェックをしている:結果は

var select = $('#individualRestaurant'); 
    console.log(select); 

[select#individualRestaurant.form-control.selectpicker, context: document, selector: "#individualRestaurant"] 
この根本的な原因は、私はそれを使用していて、それが私のドロップダウンを変更しているように見えます

更新#2

にS: https://silviomoreto.github.io/bootstrap-select/

次のコードが動作するようになりました:

$('#restaurantChain').on('hidden.bs.select', function (e) { 
    console.log('test'); 
    $('#individualRestaurant').find('[id=restaurantId]').remove(); 
    $('#individualRestaurant').selectpicker('refresh'); 
}); 
+0

あなたは2番目のドロップダウンから特定のオプション、またはオプションのすべてを削除したいされていますか? – CheArmstrong

答えて

0

良い仕事jsfiddleを含むため。私は問題がルートスコープにloadrestaurants関数を入れていないと思う。あなたのフィドルでは、それは "負荷"機能にあります。

jsfiddle settings

+0

このフィドル作品:https://jsfiddle.net/wh5utw5j/3/ –

+0

ありがとう。それはjsfiddleを修正しますが、自分のコードは修正しません。私はJQueryが読み込んでいることを知っています。 – K20GH

+0

私はちょうどこれが衝突を引き起こしているのだろうかと疑問に思っているコードをいくつか追加しました – K20GH

2

上記のコードは正しく動作しています。あなたは完全に空のドロップダウンを設定したい場合は、可能性、

enter image description here

Javascriptのブラウザのコンソールで、コードの下に

function loadRestaurants() { 
    var editSpecific = $('#checkboxes-specific').is(':checked'); 
    console.log(editSpecific); 
    if (editSpecific) { 
     $('#dbSearch').find('option').remove().end(); 
    } 
} 

Htmlの

<div class="col-sm-3"> 
       <select id="dbReader" onchange="loadRestaurants()"class="form-control"><option 
         value="-1">All Readers</option> 
        <c:forEach items="${readers}" var="reader"> 
         <option value="${reader.id}">${reader.name}</option> 
        </c:forEach></select> 
      </div> 
      <div class="col-sm-3"> 
       <select id="dbSearch" class="form-control"> 
        <option value="TODAY">Today</option> 
        <option value="YESTERDAY">Yesterday</option> 
        <option value="WTD">WTD</option> 
        <option value="MTD">MTD</option> 
        <option value="CUSTOM">CUSTOM</option> 
       </select> 
      </div> 
+0

コンソールにエラーはありません。私はすることができますし、動作するデータを投稿する関数に他のjqueryを入れた – K20GH

1

を任意のエラーを確認してくださいHTMLを「空白」に設定します。

フィドル - https://jsfiddle.net/wh5utw5j/4/

HTML:

<div class="form-group" id="chainDrop"> 
    <label for="restaurantChain">What chain does it belong to?</label> 
    <select class="form-control selectpicker" id="restaurantChain" name="restaurantChain" data-live-search="true"> 
      <option value="1">One</option> 
      <option value="2">Two</option> 
      <option value="3">Three</option> 
    </select> 
</div> 

<div class="form-group" id="specific"> 
    <label for="individualRestaurant">Restaurant Name(Chain Override)</label> 
    <select class="form-control selectpicker" id="individualRestaurant" name="individualRestaurant" data-live-search="true"> 
      <option value="1">One</option> 

JS:

$(document).ready(function() { 
    $('#restaurantChain').change(function() { 
     $('#individualRestaurant').html(''); // Empty the options 
     // Do something else here 
    }); 
}); 

私も代わりにそれを有するので、最初のドロップダウンへの変更をバインドするためにそれを更新しました列をなして。ブートストラップ・select.jsが使用されているとして、次のコードを使用しなければならない

+0

私はこれをテストしたと同じ問題があります – K20GH

+0

関数はまったく発砲ですか?それをデバッグしていますか? ページが完全に読み込まれない可能性があるため、要素が存在しない可能性があります。 $(document).ready()関数のコードですか? 上記の例を更新しました。 – CheArmstrong

+0

うん、機能は発砲している。関数内で単純なconsole.log( 'test')をポップすると、selectオプションが変更されたときにコンソールに結果が表示されます – K20GH

0

$('#restaurantChain').on('hidden.bs.select', function (e) { 
    $('#individualRestaurant').find('[id=restaurantId]').remove(); 
    $('#individualRestaurant').selectpicker('refresh'); 
}); 
関連する問題