Commit 8ec7d721 authored by David Stutz's avatar David Stutz

Example for #553 and #548.

parent 9abf0138
...@@ -937,46 +937,46 @@ ...@@ -937,46 +937,46 @@
*/ */
refresh: function () { refresh: function () {
var inputs = $.map($('li input', this.$ul), $); var inputs = $.map($('li input', this.$ul), $);
var selectedClass = this.options.selectedClass;
$('option', this.$select).each(function (index, element) { $('option', this.$select).each($.proxy(function (index, element) {
var $elem = $(element); var $elem = $(element);
var value = $elem.val(); var value = $elem.val();
var $input; var $input;
for (var i = inputs.length; 0 < i--; /**/) { for (var i = inputs.length; 0 < i--; /**/) {
if (value !== ($input = inputs[i]).val()) if (value !== ($input = inputs[i]).val())
continue; // wrong li continue; // wrong li
if ($elem.is(':selected')) { if ($elem.is(':selected')) {
$input.prop('checked', true); $input.prop('checked', true);
if (selectedClass) { if (this.options.selectedClass) {
$input.closest('li') $input.closest('li')
.addClass(selectedClass); .addClass(this.options.selectedClass);
} }
} }
else { else {
$input.prop('checked', false); $input.prop('checked', false);
if (selectedClass) { if (this.options.selectedClass) {
$input.closest('li') $input.closest('li')
.removeClass(selectedClass); .removeClass(this.options.selectedClass);
} }
} }
if ($elem.is(":disabled")) { if ($elem.is(":disabled")) {
$input.attr('disabled', 'disabled') $input.attr('disabled', 'disabled')
.prop('disabled', true) .prop('disabled', true)
.closest('li') .closest('li')
.addClass('disabled'); .addClass('disabled');
} }
else { else {
$input.prop('disabled', false) $input.prop('disabled', false)
.closest('li') .closest('li')
.removeClass('disabled'); .removeClass('disabled');
} }
break; // assumes unique values break; // assumes unique values
} }
}); }, this));
this.updateButtonText(); this.updateButtonText();
this.updateSelectAll(); this.updateSelectAll();
......
...@@ -4322,6 +4322,78 @@ $(document).ready(function() { ...@@ -4322,6 +4322,78 @@ $(document).ready(function() {
&lt;select id=&quot;example-disable-javascript&quot; multiple=&quot;multiple&quot;&gt;&lt;/select&gt; &lt;select id=&quot;example-disable-javascript&quot; multiple=&quot;multiple&quot;&gt;&lt;/select&gt;
</pre> </pre>
<p>
Performance example for using <code>.multiselect('refresh')</code> with a large number of options:
</p>
<p class="alert alert-warning">The below examples need to be activated. <b>Note that this may take some time!</b></p>
<p class="alert alert-info"><button id="example-large-refresh-button" class="btn btn-primary">Activate</button></p>
<div class="example">
<script type="text/javascript">
$(document).ready(function() {
$('#example-large-refresh-button').on('click', function() {
for (var i = 0; i < 1000; i++) {
$('#example-large-refresh').append('<option value="' + i + '">Option ' + i + '</option>');
}
$('#example-large-refresh').multiselect();
});
$('#example-large-refresh-refresh').on('click', function() {
$('#example-large-refresh').multiselect('refresh');
});
$('#example-large-refresh-select').on('click', function() {
var count = 0;
$('#example-large-refresh option').each(function() {
var i = $(this).val();
if (i%2 == 0) {
$(this).prop('selected', true);
count++;
}
});
alert('Selected ' + count + ' options!');
});
});
</script>
<div class="btn-group">
<select id="example-large-refresh" multiple="multiple">
</select>
<button id="example-large-refresh-select" class="btn btn-default">Select every second option ...</button>
<button id="example-large-refresh-refresh" class="btn btn-primary">Refresh!</button>
</div>
</div>
<div class="highlight">
<pre class="prettyprint linenums">
&lt;script type=&quot;text/javascript&quot;&gt;
$(document).ready(function() {
$('#example-confirmation').multiselect({
onChange: function(element, checked) {
if(checked === true) {
//action taken here if true
}
else if(checked === false) {
if(confirm('Do you wish to deselect the element?')) {
//action taken here
}
else {
$("#example-confirmation").multiselect('select', element.val());
}
}
}
});
});
&lt;/script&gt;
</pre>
</div>
<div class="page-header"> <div class="page-header">
<h2 id="post">Server-Side Processing</h2> <h2 id="post">Server-Side Processing</h2>
</div> </div>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment