$(…).selectpicker no es una función

3 minutos de lectura

Avatar de usuario de Djov
Djov

Estoy usando bootstrap-select para un formulario. Incluyo los scripts (jquery, bootstrap-select) en el encabezado del archivo HTML.

<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>

Todos los elementos seleccionados con la clase “selectpicker” se llamaron correctamente. Ejemplo del elemento seleccionado:

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

Sin embargo, si llamo al siguiente script en la misma página

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

me sale este desagradable error

$(…).selectpicker no es una función

Mirando la pestaña de fuentes en Google Chrome, veo que bootstrap-select.min.js está bien cargado. ¿Alguien tiene sugerencias?

  • De su documentación, también debe incluir bootstrap: Requires jQuery v1.8.0+, Bootstrap’s dropdown.js component, and Bootstrap's CSS silviomoreto.github.io/bootstrap-select

    –Rory McCrossan

    12 de abril de 2017 a las 9:06


  • ¿Puedes mostrar un ejemplo en vivo?

    – código máximo

    12 de abril de 2017 a las 9:09

  • necesitas incluir cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.5.4/… también

    – Vinod Louis

    12 de abril de 2017 a las 9:11

  • Lamentablemente, este no era el problema. Bootstrap ya estaba incluido en el archivo (vista HTML diferente).

    – Djov

    12 de abril de 2017 a las 9:41

Avatar de usuario de Calin Vlasin
calin vlasin

si tienes otro jquery.js referencia que se está cargando después bootstrap-select.min.js se borrará $(...).selectpicker función y otras funciones. Asegúrese de que bootstrap-select.min.js se cargue en último lugar.

  • Esto fue. Jquery se cargó estúpidamente dos veces en mi solución. Muchas gracias, que error de novato.

    – Djov

    12 de abril de 2017 a las 11:52

  • Intenté esto pero no funcionó … todavía dice Uncaught TypeError: $(…).selectpicker no es una función @Djov

    – Khushbu Vaghela

    19 de mayo de 2021 a las 13:13


  • Encontré que la solución .selectpicker() está funcionando en document.ready()

    – Khushbu Vaghela

    20 de mayo de 2021 a las 4:44

Avatar de usuario de DevTheJo
DevTheJo

Intenta cargar bootstrap antes de 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>

Por alguna razón, esto debe llamarse a través de jquery

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

Esto (no jquery) genera el error:

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

Me interesa saber por qué.

  • Hola, debido a que SelectPicker es una biblioteca jquery, significa que funcionará y reaccionará solo con los ‘objetos’ de Jquery y no con el elemento ‘real’ seleccionado del dom, si busca mejor, puede encontrar que el elemento devuelto por jquery (usando $('#elemnt-id') ) es muy diferente de document.getElementById("elemnt-id");.

    – Hicham O-Sfh

    9 de junio de 2021 a las 1:08

  • Gracias @HichamO-Sfh eso tiene sentido.

    – Nick.McDermaid

    9 de junio de 2021 a las 2:35

¿Ha sido útil esta solución?