Искам да променя заместител на падащо меню, създадено от selectize.js, когато родителското падащо меню промени своя избор, за да зареди опциите на падащото меню, чийто заместител да бъде променен. Няма метод за това в документацията.
Как да промените контейнера на падащото меню selectize.js?
Отговори (9)
Не съм сигурен дали selectize продължава да променя кода си или всички останали в тази нишка просто са шушнали, но всички тези отговори изглеждат грешни поотделно, но ако някак комбинирате правилните части от всеки отговор, ще получите това, което работи за мен.
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'),
});
Можете да посочите ключ placeholder
като част от обекта с опции при инициализиране. Не можах да намеря опцията в документацията и я намерих само като ровех в кода.
//init selectize
$(function() {
$('select').selectize({
placeholder: 'Click here to select ...',
});
});
Имате нужда от две неща:
- добавете празен
<option></option>
като първи таг за опция в избраното. - добавете
placeholder
ключ къмselectize
повикване
Можете да посочите контейнер за select
елементи, като добавите празен option
елемент вътре в маркера за избор. Ето един пример:
<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>
Уверете се, че използвате select
таг за selectize
.
Имах същия проблем, причинен от използването на вход вместо това. selectize
също работи, но атрибутът placeholder
не се показва. Когато смених на select
, започна да работи
<select type="text" placeholder="Type words of the article..."></select>
Можете да актуализирате контейнера, като зададете selectize.settings.placeholder и след това извикате 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="/bgstyle.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>
Това е, което работи за мен (изберете версия "selectize": "^0.12.4"
и използвайте само машинопис):
this.selectize = $(this.select).selectize({
options: this.options,
placeholder: 'My Placeholder'
})[0].selectize;
this.selectize.settings.placeholder = 'Another Placeholder';
this.selectize.updatePlaceholder();
s = $('select')[0].selectize; s.settings.placeholder = "new or revised placeholder"; s.updatePlaceholder()
.
- person user697473; 15.05.2020
selectize.js ще създаде input
под select
. Този input
ще има клас .selectize-control
.
Можете да замените placeholder
на това поле input
с jQuery.
Можете да направите нещо като:
$(".selectize-control").attr('placeholder','Hello World!');
Ако искате работещ пример, имам нужда от повече информация за вашия код.
Имах подобен проблем - това, което беше разочароващо е, че бих направил нещо подобно:
$("selectize-input input[placeholder]").attr('placeholder','Hello World!');
След това само след промяна на фокуса ще изобрази новия ми текст на контейнера. Оказва се, че по някаква причина (вероятно добра) selectize прилага ширина към този вход.
Окончателно решение:
$(".selectize-input input[placeholder]").attr('placeholder','Hello World!');
$(".selectize-input input[placeholder]").attr("style", "width: 100%;");