$(...).selectpicker is not a function
Asked Answered
O

3

25

I am using bootstrap-select for a form. I include the scripts (jquery, bootstrap-select) in the header of the HTML file.

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.2/css/bootstrap-select.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.2/js/bootstrap-select.min.js"></script>
<link rel="stylesheet "type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

All the select elements with class "selectpicker" all called correctly. Example of the select element:

<select id="test" class="selectpicker">
        <option>Mustard</option>
        <option>Ketchup</option>
        <option>Relish</option>
</select>

However, if I call the following script on the same page

<script>
$(document).ready(
    function () {
        $('#test').selectpicker('val', 'Relish')
});
</script>

I get this nasty error

$(...).selectpicker is not a function

Looking at the sources tab in Google Chrome, I see that the bootstrap-select.min.js is loaded well. Has anyone got suggestions?

Orang answered 12/4, 2017 at 9:5 Comment(4)
From their documentation you also need to include bootstrap itself: Requires jQuery v1.8.0+, Bootstrap’s dropdown.js component, and Bootstrap's CSS silviomoreto.github.io/bootstrap-selectOdellodella
Can you show a live example?Knives
You need to include cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.5.4/… as wellOxcart
Sadly, this was not the issue. Bootstrap was already included in the file (different HTML view).Orang
S
46

If you have another jquery.js reference that is loading after bootstrap-select.min.js it will wipe out $(...).selectpicker function and other functions. Make sure that bootstrap-select.min.js is loaded last.

Sharlasharleen answered 12/4, 2017 at 10:20 Comment(3)
This was it. Jquery was stupidly loaded twice in my solution. Thanks a lot, what a rookie mistake.Orang
I tried this but not working..still says Uncaught TypeError: $(...).selectpicker is not a function @OrangBiliary
I found the solution .selectpicker() is working in document.ready()Biliary
S
3

Try to load bootstrap before bootstrap-select ;-)

<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.2/css/bootstrap-select.min.css">

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.2/js/bootstrap-select.min.js"></script>
Sorghum answered 12/4, 2017 at 11:37 Comment(0)
E
3

For whatever reason this needs to be called through jquery

$("#MyDropDown").selectpicker('render');

This (non jquery) generates the error:

mdd = document.getElementById("MyDropDown");
mdd.selectpicker('render');

I'm interested to know why.

Eocene answered 9/1, 2021 at 12:46 Comment(2)
Hi, because SelectPicker is a jquery libray, it means that it will work & react only with Jquery 'objects' and not 'real' element selected from the dom, if you search better you can find that the elemnt returned by jquery ( using $('#elemnt-id') ) is far different from document.getElementById("elemnt-id");.Discomfiture
Thanks @HichamO-Sfh that makes sense.Eocene

© 2022 - 2024 — McMap. All rights reserved.