Hallo,

Ik loop tegen het volgende probleem aan in mijn applicatie.
Ik heb een formulier met daarin een invoerveld, die resultaten D.M.V AJAX ophaald zodra er op submit wordt geklikt.
Nu werkt dat prima, maar ik wil graag de resultaten in een Bootstrap dropdown lijst onder het invoerveld laten zien.
Het probleem zit hem in het moment dat ik de data-toggle="dropdown" attribuut op de button plaats, waardoor hij ineens niet meer reageert op de event handler.

Jquery:

 $(document).ready(function(){
            $('#search_video').on('submit',function( event ){
                var str = $("#str").val();
                $.ajax({
                    url: "ajax/searchVideosOnYT.php",
                    method: "post",
                    success: function(data){
                        alert(data);
                    },
                    error: function(data){
                        alert("fout!!!");
                    },
                    dataType: "json",
                    data: {SearchString: str}
                });
                return false;
            });
        });


formulier:


<form id="search_video" action="" method="POST">
            <div class="input-group stylish-input-group">
                <input type="text" class="form-control"  placeholder="Search" name="str" id="str">
                <span class="input-group-addon">
                    <button class="dropdown-toggle" data-toggle="dropdown" type="submit" value="search">
                        <span class="glyphicon glyphicon-search"></span>
                    </button>
                </span>
            </div>
            <div class="dropdown">
                <ul class="dropdown-menu">
                    <li><a href="#">HTML</a></li>
                    <li><a href="#">CSS</a></li>
                    <li><a href="#">JavaScript</a></li>
                </ul>
            </div>
        </form>


Weet iemand wat hier fout gaat? Dus zodra ik de data-toggle="dropdown" plaats, dan wordt de event handler niet meer gebruikt, en wordt er ook geen dropdown menu getoond.

Alvast bedankt.
bedankt Davy, hierdoor wordt in ieder geval wel de event handler getriggerd. Nu is alleen het probleem dat ik het dropdown menu niet aan de praat kan krijgen

[size=xsmall]Toevoeging op 23/08/2015 19:08:02:[/size]

ik heb het al voor elkaar kunnen krijgen door $(".dropdown-menu").dropdown('toggle'); the gebruiken. nogmaals bedankt
Ik zal proberen uit te leggen wat er hier nou gebeurd: Twitter Bootstrap luistert naar het click event op de submit button. De functie die dan aangeroepen wordt bevat return false. Dit is gelijk aan event.preventDefault() en event.stopPropagation().

De eerste betekend dat het standaard gedrag, in dit geval het verzenden van het formulier, wordt gestopt. Dit betekend dat jouw listener op form.on('submit') niet aangeroepen wordt.

Wanneer jij nu jouw listener op het click event van de submit button koppelt, zal jouw functie eerder aangeroepen worden dan de functie van bootstrap (heeft met volgorde van de javascripts te maken). Ook jouw functie bevat return false. Het probleem hier is dat deze ook event.stopPropagation() aanroept, dit betekend dat alle volgende listeners voor de click op de submit button niet meer worden uitgevoerd.
Dus, de listener van twitter bootstrap om te "toggelen" wordt niet meer uitgevoerd.

De oplossing is dat jij return false weghaalt en daarvoor in de plaatst alleen event.preventDefault() aanroept (wat precies is wat jij wilt, jij wilt niet dat het formulier verzonden wordt, maar de andere listeners mogen gewoon uitgevoerd worden).

Reageren