Reputation: 1981
I've tried this:
var eventHandler = function() {
return function() {
console.log($select.val());
};
};
var $select = $('.selectize').selectize({
create : true,
onChange : eventHandler()
});
Which get me the value of the selected option but I need the text. When I do this:
console.log($select.val().text());
I get an error. I've tried other things to no avail. How do I get the selected text?
Upvotes: 11
Views: 24471
Reputation: 11
this trick worked for me when using single item selectize:
var selectedText_ = "";
var val_ = $("#mySelect")[0].selectize.items[0]; // get first value
if (val_)
selectedText_ = $("span[data-value=" + val_ + "] div").text(); // get text
You can manipulate the code above using a loop if you want to select all Texts from your multi-value selectize
Upvotes: 0
Reputation: 313
selectize_obj.getValue()
$(selectize_obj.getItem(value)).html()
Upvotes: 1
Reputation: 108
Simply using $('select[class*="selectize"] option')
worked for me. I used *=
because I often use multiple classes at a time on elements (more on jQuery selectors/wildcards at w3schools.com). Otherwise, if using id or name, I would use $('select[id="selectize-id"] option')
or $('select[name="selectize-name"] option')
respectively.
Then, to get the option value, I add on .text()
and to get the option key I add on .val()
.
Example
If I have a list of countries and "usa" is the currently selected value with "United States" being the currently viewable text, I would do the following:
$('select[class*="selectize"] option').val()
to return "usa"$('select[class*="selectize"] option').text()
to return "United States"Possible Alternative
Simply using the basic id selector -- as in $('#selectize-id option')
-- did not work. However, using the basic class selector -- as in $('.selectize-class option')
-- did seem to work (more on attribute selectors on w3schools.com). Perhaps someone can comment on the difference between the two ($('#someId)
vs $('element[id="someId"]')
) that causes this.
Upvotes: 0
Reputation: 471
You could get the text with this line:
ddlcontrol[0].selectize.getItem(ddlcontrol[0].selectize.getValue()).text();
where ddlcontrol comes from:
var ddlcontrol = $('#ddCountry').selectize({
valueField: 'id',
labelField: 'name',
searchField:['name']
});
Hope it works for you!.
Upvotes: 4
Reputation: 1934
you can get selected text by :
$('select').selectize({
onInitialize: function (selectize) {
selectize.on('change', function (value) {
var item = this.$input[0];
var selected_text = $(item.selectize.getItem(value)[0]).text();
});
}
}
Upvotes: 7
Reputation: 14012
This thing can be added via prototype:
Selectize.prototype.getText = function () {
return this.getItem(this.getValue()).text();
};
If someone would need method setText
(like corresponding method setValue
) it can be added this way:
Selectize.prototype.setText = function (text) {
var selectize = this;
$.each(this.options, function (propertyName, propertyValue) {
if (propertyValue[selectize.settings.labelField] === text) {
selectize.setValue(propertyName);
return false;
}
});
};
Upvotes: 3
Reputation: 618
the easiest way is to use onChange
event and get text from selected option
JS:
$(function(){
$('#select').selectize({
create: true,
sortField: {
field: 'text',
direction: 'asc'
},
onChange:function(value){
$(".log").append("Value:" + value + "<br />");
$(".log").append("Text:" +$("#select option:selected").text() + "<br />");
},
dropdownParent: 'body'
});
});
<link rel="stylesheet" type="text/css" href="https://selectize.github.io/selectize.js/css/styles.css">
<link rel="stylesheet" type="text/css" href="https://selectize.github.io/selectize.js/css/selectize.default.css">
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script type="text/javascript" src="https://selectize.github.io/selectize.js/js/selectize.js"></script>
<select id="select" class="control-form" data-placeholder="Select a person...">
<option value="">None</option>
<option value="4">Thomas Edison</option>
<option value="1">Nikola</option>
<option value="3">Nikola Tesla</option>
<option value="5">Arnold Schwarzenegger</option>
</select>
<div class="log"></div>
Upvotes: 7
Reputation: 91
select_option.getItem(select_option.getValue())[0].innerHTML;
select_option = $select_option[0].selectize;
to get text value of a specified dropdown option.
this.getItem(value)[0].innerHTML
to get text value of current dropdown option
Upvotes: 9
Reputation: 1981
So I got it working kind of. It's damn kludgey and there has to be a better way. There's a method getValue()
but there's isn't a corresponding getText()
method.
var eventHandler = function() {
return function() {
var something = selectizeControl.getItem(selectizeControl.getValue());
console.log(something.text());
};
};
var $select = $('.selectize').selectize({
create : true,
onChange : eventHandler()
});
var selectizeControl = $select[0].selectize
Upvotes: 4