Para el complemento de menú de selección chosen.js, ¿existe una forma establecida de agregar la característica 'seleccionar todos los elementos de la lista' o 'eliminar todos los elementos de la lista' a un seleccionar múltiple ¿entrada? ¿En la rama principal o quizás en una de las horquillas? ¿O alguien lo ha hecho antes? ¿Tiene algunos consejos?'seleccionar todo' y 'eliminar todo' con choose.js
Respuesta
Cabe bastante sencillo, simplemente hacerlo de la manera "normal" en primer lugar:
$('.my-select-all').click(function(){
$('#my_select option').prop('selected', true); // Selects all options
});
después dispare el evento liszt:updated
para actualizar el widget elegido, por lo que todo el asunto sería algo como esto:
actualización: Para aquellos que no scroll down and check the other answers, el evento se llama chosen:updated
partir de una versión lanzada en agosto de 2013. Consulte la documentation si en duda.
<select multiple>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<button class="select">Select all</button>
<button class="deselect">Deselect all</button>
$('select').chosen();
$('.select').click(function(){
$('option').prop('selected', true);
$('select').trigger('liszt:updated');
});
$('.deselect').click(function(){
$('option').prop('selected', false);
$('select').trigger('liszt:updated');
});
demostración de trabajo (código JS está en la parte inferior): http://jsfiddle.net/C7LnL/1/
más estricta versión: http://jsfiddle.net/C7LnL/2/
versión aún más fuerte: http://jsfiddle.net/C7LnL/3/
echaba de menos th e característica similar. Esto agrega los dos enlaces Todos y Ninguno (textos personalizables mediante las opciones desmarcar_todo_textual y seleccionar_todo_textual) en la parte superior de la lista emergente. Es posible que deba editar esto si usa la agrupación.
$("select").on("chosen:showing_dropdown", function(evnt, params) {
var chosen = params.chosen,
$dropdown = $(chosen.dropdown),
$field = $(chosen.form_field);
if(!chosen.__customButtonsInitilized) {
chosen.__customButtonsInitilized = true;
var contained = function(el) {
var container = document.createElement("div");
container.appendChild(el);
return container;
}
var width = $dropdown.width();
var opts = chosen.options || {},
showBtnsTresshold = opts.disable_select_all_none_buttons_tresshold || 0;
optionsCount = $field.children().length,
selectAllText = opts.select_all_text || 'All',
selectNoneText = opts.uncheck_all_text || 'None';
if(chosen.is_multiple && optionsCount >= showBtnsTresshold) {
var selectAllEl = document.createElement("a"),
selectAllElContainer = contained(selectAllEl),
selectNoneEl = document.createElement("a"),
selectNoneElContainer = contained(selectNoneEl);
selectAllEl.appendChild(document.createTextNode(selectAllText));
selectNoneEl.appendChild(document.createTextNode(selectNoneText));
$dropdown.prepend("<div class='ui-chosen-spcialbuttons-foot' style='clear:both;border-bottom: 1px solid black;'></div>");
$dropdown.prepend(selectNoneElContainer);
$dropdown.prepend(selectAllElContainer);
var $selectAllEl = $(selectAllEl),
$selectAllElContainer = $(selectAllElContainer),
$selectNoneEl = $(selectNoneEl),
$selectNoneElContainer = $(selectNoneElContainer);
var reservedSpacePerComp = (width - 25)/2;
$selectNoneElContainer.addClass("ui-chosen-selectNoneBtnContainer")
.css("float", "right").css("padding", "5px 8px 5px 0px")
.css("max-width", reservedSpacePerComp+"px")
.css("max-height", "15px").css("overflow", "hidden");
$selectAllElContainer.addClass("ui-chosen-selectAllBtnContainer")
.css("float", "left").css("padding", "5px 5px 5px 7px")
.css("max-width", reservedSpacePerComp+"px")
.css("max-height", "15px").css("overflow", "hidden");
$selectAllEl.on("click", function(e) {
e.preventDefault();
$field.children().prop('selected', true);
$field.trigger('chosen:updated');
return false;
});
$selectNoneEl.on("click", function(e) {
e.preventDefault();
$field.children().prop('selected', false);
$field.trigger('chosen:updated');
return false;
});
}
}
});
También estoy usando un CSS para limitar la altura de las Oferta de seleccionados en caso de que haya dicen que decenas de ellos:
.chosen-choices {
max-height: 150px;
}
Esta parece ser la mejor opción porque se adapta a la selección. Realmente me gustó el resultado. – alex
usted debe tratar esto:
$('#drpdwn').empty();
$('#drpdwn').trigger('chosen:updated');
Esto elimina todos los elementos del menú desplegable e impide que se seleccione alguno más adelante. – Michael
$("#ctrlName option:selected").removeAttr("selected").trigger('liszt:updated');
borrar todo
$("#ctrlName option").attr("selected","selected").trigger('liszt:updated');
seleccionar todos
Prueba este código va a trabajar 100%
// Deselect All
$('#my_select_box option:selected').removeAttr('selected');
$('#my_select_box').trigger('chosen:updated');
// Select All
$('#my_select_box option').prop('selected', true);
$('#my_select_box').trigger('chosen:updated');
camino, del mismo recta de la limpieza de la selección:
$('select').val('');
$('select').val('').trigger("chosen:updated");
Cerrar pero necesita actualizar el control. $ ('select'). val (''). trigger ("elegido: actualizado"); – AntonK
realizo esta pregunta es bastante antiguo, pero me vino sobre un problema similar y quería compartir mi resultado, como me gusta es la simplicidad:
Creé dos botones (todos y ninguno) y flo ated a izquierda y derecha dentro del div que contiene mi menú desplegable de selección.Los botones tienen el siguiente aspecto:
<button style="float:left;" class="btn" id="iAll">All</button>
<button style="float:right;" class="btn" id="iNone">None</button>
Luego añade un poco de jQuery para manejar las acciones de los botones:
$('#iAll').on('click', function(e){
e.preventDefault();
$('#iSelect option').prop('selected', true).trigger('chosen:updated');
});
$('#iNone').on('click', function(e){
e.preventDefault();
$("#iSelect option:selected").removeAttr("selected").trigger('chosen:updated');
});
probable que necesite una limpieza en cuanto a diseño, pero es bastante funcional como está y Pensé que lo compartiría.
- 1. hibernar y eliminar todo
- 2. WPF Datagrid Botón "Seleccionar todo" - "Deseleccionar todo" también?
- 3. UISearchBar seleccionar todo el texto
- 4. Buscar y eliminar todo en mongo/mongoid
- 5. RegEx para seleccionar todo entre dos caracteres?
- 6. Jquery seleccionar todo si no está deshabilitado
- 7. Evento para Seleccionar todo: WPF Datagrid
- 8. SQL seleccionar todo por una tabla sólo
- 9. SQL seleccionar todo en una matriz
- 10. Eliminar todo target = "_ blank" de los enlaces
- 11. ¿Cómo puedo eliminar todo performSelector: withObject: afterDelay :?
- 12. ¿Eliminar todo el HTML de una cadena?
- 13. reemplazar/eliminar todo entre dos personajes
- 14. Eliminar todo después de cierto carácter
- 15. Eliminar todo entre paréntesis java usando regex
- 16. Cómo eliminar todo QGraphicsItem de QGraphicsScene
- 17. Eliminar todo el contenido utilizando JS puro
- 18. Eliminar caracteres y todo después de la cadena
- 19. Eliminar todo el contenido del archivo
- 20. Entity Framework Eliminar todo en enviar
- 21. Regex eliminar todo después de: (incluyendo :)
- 22. jQuery - Eliminar todo después de un elemento
- 23. Cómo eliminar todo del mapa de google
- 24. Eliminar archivo con todo el historial del repositorio svn
- 25. de expresiones regulares para eliminar todo menos caracteres y números
- 26. Reemplazar todo entre [y] en regex java
- 27. ¿TODO o nulo con enumeraciones?
- 28. MySQL, donde todo en
- 29. Git GUI .. escenificar todo
- 30. Seleccionar todo como valor predeterminado para el parámetro Multivalue
aclamaciones @wesley - simplemente dándole una oportunidad en este momento ... – Petrov
bien hecho @wesley - pensé que sería algo así. una gran ayuda! – Petrov
'trigger ('liszt: updated')' es la clave, incluso si deja de usarlo, el código elegido seguirá funcionando. –