javascript jquery dynamic placeholder selectize.js

javascript - ¿Cómo cambiar el marcador de posición del menú desplegable selectize.js?



jquery dynamic (9)

Asegúrese de usar una etiqueta de select para selectize .
Estaba teniendo el mismo problema, causado por el uso de una entrada en su lugar. selectize funcionó también, pero el atributo placeholder no se mostraba. Cuando cambié a una select , comenzó a funcionar

<select type="text" placeholder="Type words of the article..."></select>

Quiero cambiar el marcador de posición de un menú desplegable creado por selectize.js cuando el menú desplegable principal cambia su selección para cargar las opciones del menú desplegable cuyo marcador de posición debe modificarse. No hay un método para hacer esto en la documentación.


Necesitas dos cosas:

  • agregue <option></option> vacía como la primera etiqueta de opción en la selección.
  • agregar la tecla de placeholder para selectize llamada

No estoy seguro si selectize sigue cambiando su código o si todos los demás en este hilo simplemente sonaron, pero todas estas respuestas parecen estar equivocadas individualmente, pero si combinas las partes correctas de cada respuesta terminas con esto que funciona para mí.

var textHandler = function(name) { return function() { if(name == ''focus''){ jQuery("select#myid + .selectize-control").find("input:text").prop({"placeholder": ""}); } }; }; jQuery(''#sf159_textsearchtextsearch'').selectize({ closeAfterSelect: true, hideSelected : true, createOnBlur : true, openOnFocus : true, maxOptions : 10, persist : true, placeholder : "Neighborhood, Street, School, Zip, MLS", plugins : [''remove_button''], valueField : ''id'', labelField : ''text'', searchField : ''value'', options : [], create : false, render : { option: function (item, escape) { //console.log(item); var address = ''''; var keyword = ''''; var tx = item.text.split('',''); for (var i = 0, n = tx.length; i < n; i++) { address += ''<span class="span4">'' + escape(tx[i]) + ''</span>''; } var template = ''<div>'' + ''<div class="row-fluid"> '' + address + '' </div>'' + ''</div>''; return template; } }, load : searchHandler, onKeydown : keyHandler, onDelete : deleteHandler, onFocus : textHandler(''focus''), });


Puede actualizar el marcador de posición configurando selectize.settings.placeholder y luego llamando a selectize.updatePlaceholder () .

$(document).ready(function() { var s = $(''#input-tags'').selectize({ persist: false, createOnBlur: true, create: true, placeholder: ''start placeholder'' })[0].selectize; $(''#updatePlaceholder'').click(function() { s.settings.placeholder = ''new placeholder''; s.updatePlaceholder(); }); });

<!DOCTYPE html> <html> <head> <script data-require="[email protected]" data-semver="3.1.1" src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> <link rel="stylesheet" href="style.css" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.12.4/css/selectize.css" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.12.4/css/selectize.default.css" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.12.4/js/standalone/selectize.js"></script> <script src="script.js"></script> </head> <body> <h1>Selectize setting placeholder</h1> <input type="text" id="input-tags" value=""> <button id="updatePlaceholder">change</button> </body> </html>


Puede especificar un marcador de posición para elementos select agregando un elemento de option vacío dentro de la etiqueta de selección. Aquí hay un ejemplo:

<select name="color" required> <option value=""> Select a color </option> <option value="1"> Lavender </option> <option value="2"> Eggplant </option> <option value="3"> Cool grey </option> <option value="4"> Bitter lemon </option> </select>


Puede especificar una clave de placeholder como parte del objeto de opciones al inicializar. No pude encontrar la opción en la documentación y solo la encontré explorando el código.

//init selectize $(function() { $(''select'').selectize({ placeholder: ''Click here to select ...'', }); });


Tuve un problema similar: lo frustrante es que haría algo como esto:

$("selectize-input input[placeholder]").attr(''placeholder'',''Hello World!'');

Luego, solo después de cambiar el foco, representaría el nuevo texto de marcador de posición. Resulta que por cualquier razón (probablemente una buena) selectize aplica un ancho a esta entrada.

Solución final:

$(".selectize-input input[placeholder]").attr(''placeholder'',''Hello World!''); $(".selectize-input input[placeholder]").attr("style", "width: 100%;");


selectize.js creará una input debajo de la select . Esta input tendrá la clase .selectize-control .

Puede reemplazar el placeholder de placeholder de este campo de input con jQuery.

Puedes hacer algo como:

$(".selectize-control").attr(''placeholder'',''Hello World!'');

Si desea un ejemplo que funcione, necesitaré más información sobre su código.


$(''select#my-dropdown + .selectize-control'').find(''.selectize-control-input'').prop({''placeholder'': ''Placeholder Text''});