Select2 Deshabilitar / Habilitar opción específica -- jquery campo con select campo con jquery-select2 camp Relacionados El problema

Select2 disable/enable specific option


22
vote

problema

Español

Tengo una lista que es de tipo selecto2.

  <select id="list" class="form-control select2 select2-hidden-accessible" tabindex="-1" aria-hidden="true"> <optgroup label="Types"> <option value="None">None</option> <option value="1">One</option> <option value="2">Two</option> </optgroup> </select>   

Quiero deshabilitar la opción que está teniendo valor = 1 Así que me hice así

  $("#list>optgroup>option[value='1']").prop('disabled',true);    Result:// <option value="1" disabled>One</option>   

Está funcionando bien; pero si quiero volver a habilitar la opción deshabilitada, lo intenté por debajo de los códigos, pero aún así, la opción Select2 está deshabilitada.

  $("#list>optgroup>option[value='1']").prop('disabled',false); $("#list>optgroup>option[value='1']").removeProp('disabled');   Result://   <option value="1">One</option>   

Pero se elimina la propiedad discapacitada extraña de la opción. Pero la opción Select2 permanece deshabilitada.

No recibe cómo resolver esto. Necesita ayuda.

ACTUALIZACIÓN: Si verifico DOM de SELECT2, está teniendo esta propiedad incluso después de retirar deshabilitada.

  <li class="select2-results__option" id="select2-template-type-list-result-4qd3-merge" role="treeitem" aria-disabled="true">One</li>   

Si hago aria-discapacitado = "falso" se habilitará. No puede conseguir lo que es la causa.

Original en ingles

I have a list which is of type select2.

<select id="list" class="form-control select2 select2-hidden-accessible" tabindex="-1" aria-hidden="true"> <optgroup label="Types"> <option value="None">None</option> <option value="1">One</option> <option value="2">Two</option> </optgroup> </select> 

I want to disable option which is having value=1 so I did like this

$("#list>optgroup>option[value='1']").prop('disabled',true);    Result:// <option value="1" disabled>One</option> 

It is working fine;but if i want to re-enable disabled option i tried below codes but still the select2 option is disabled.

$("#list>optgroup>option[value='1']").prop('disabled',false); $("#list>optgroup>option[value='1']").removeProp('disabled');   Result://   <option value="1">One</option> 

but strange is disabled property of the option is removed. but the select2 option remains disabled.

Not getting how to resolve this. Need help.

Update: If I check DOM of select2 it is having this property even after removing disabled.

<li class="select2-results__option" id="select2-template-type-list-result-4qd3-merge" role="treeitem" aria-disabled="true">One</li> 

if i make aria-disabled="false" it will enable. not able to get what is the cause.

        
         
         

Lista de respuestas

34
 
vote
vote
La mejor respuesta
 

Probablemente sea la forma más fácil de lograr esto, estaría llamando apache-tomcat/bin/setenv.bat6 en el elemento nuevamente después de cambiar el atributo deshabilitado.

http://jsfiddle.net/xoxd2u15/

Dado que SELECT2 reemplaza el campo Seleccionar original con elementos HTML personalizados (y oculta el original), y aparentemente no "vea" las opciones de ese elemento seleccionado original para los cambios en su estado deshabilitado después de que La invocación, debe llamarlo una vez más después de cambiar el estado, de modo que lea los valores de atributos actuales de las opciones del elemento original.

 

Probably easiest way to achieve this, would be calling .select2(xe2x80xa6) on the element again after changing the disabled attribute.

http://jsfiddle.net/xoxd2u15/

Since select2 replaces the original select field with custom HTML elements (and hides the original), and apparently does not xe2x80x9cwatchxe2x80x9d the options of that original select element for changes in their disabled state constantly after invocation, you have to call it once more after changing the state, so that it reads the current attribute values from the original elementxe2x80x99s options.

 
 
     
     
1
 
vote

para deshabilitar esto:

  apache-tomcat/bin/setenv.bat7  

Para eliminar deshabilitar esto:

  apache-tomcat/bin/setenv.bat8  
 

For Disable Try this:

$("#list>optgroup>option[value='1']").attr('disabled','disabled'); 

To remove Disable Try this:

$("#list>optgroup>option[value='1']").removeAttr('disabled'); 
 
 
 
 
0
 
vote

Hay algunas instancias extrañas cuando necesita eliminar tanto la propiedad (propiedad del nodo) como el ATTR (Atributo HTML del documento). De hecho, no son uno de los mismos, aunque jquery tiende a tratarlos de esa manera.

para que necesites hacer

  $("#list>optgroup>option[value='1']").removeAttr('disabled').removeProp('disabled');   

De esta manera, ambos eliminan la propiedad del nodo y el atributo DOM.

Dicho esto, es probable que necesite actualizar la instancia Select2, a la que nadie mencionó la solución adecuada para.

  $('#list').trigger('change.select2');   

.trigger ('cambio') también funcionaría, pero tiene algunos efectos secundarios si se engancha otra funcionalidad en el evento de cambio. Además, no puede usarlo dentro de una función ya enganchada ('cambio').

 

There are some strange instances when you need to remove both the prop (node property) and the attr (Document HTML Attribute). They are in fact not one in the same though jQuery tends to treat them that way.

So you would need to do

$("#list>optgroup>option[value='1']").removeAttr('disabled').removeProp('disabled'); 

This way it both removes the node property and the dom attribute.

That said you likely need to update the select2 instance which nobody here mentioned the right solution for.

$('#list').trigger('change.select2'); 

.trigger('change') would also work but has some side effects if other functionality is hooked into the change event. Further you can't use it inside an already hooked on('change') function.

 
 
0
 
vote

debajo de la línea de código deshabilitará todas las opciones.

  $('#list  option').prop('disabled',true);   

Esta línea habilitará solo la opción que está teniendo valor 1.

  $('#list option[value="1"]').prop('disabled',false);  $('#list').select2();   

arriba es una respuesta más simplificada.

 

Below line of code will disable all the options.

$('#list  option').prop('disabled',true); 

This line will enable only option that is having value 1.

$('#list option[value="1"]').prop('disabled',false);  $('#list').select2(); 

Above is more simplified answer.

 
 
0
 
vote
  $("#list").find(':selected').attr('disabled','disabled'); $("#list").trigger('change');   

Ver documento oficial

https://select2.org/programmatic-control/retrieving-selections

 
$("#list").find(':selected').attr('disabled','disabled'); $("#list").trigger('change'); 

See Official Doc

https://select2.org/programmatic-control/retrieving-selections

 
 
 
 

Relacionados problema

57  Cómo configurar el valor seleccionado en selección de valor múltiple en jquery-select2  ( How to set selected value in multi value select in jquery select2 ) 
Hola, estoy vinculando mi abandono con jQuery-Select2. Está funcionando bien, pero ahora necesito unir mi selecto de valor múltiple utilizando jquery-select2....

4  Datos remotos: Objeto de resultados con diferentes atributos. ¿Cómo mapa?  ( Remote data result object with different attributes how to map ) 
Estoy tratando de usar jquery-select2 pero devuelvo los objetos JSON que tienen una estructura diferente. No tengo un id y una propiedad text PERO Code ...

0  Select2 no mostrar opciones  ( Select2 not displaying options ) 
Estoy usando select2 biblioteca para enviar una solicitud AJAX: Estoy recibiendo los datos cuando busco algo, pero por alguna razón, los resultados no apa...

224  Restablecer selecto2 valor y mostrar marcador de posición  ( Reset select2 value and show placeholder ) 
¿Cómo configuro el marcador de posición en el valor de valor de valor seleccionado2? En mi ejemplo, si se hacen clic en ubicaciones o selecciones de calificac...

13  Necesito agregar la opción "Agregar nuevo artículo" en Select2  ( I need to add add new item option in select2 ) 
Quiero agregar un botón en el primer elemento de la lista a "Agregar nuevo artículo". Si el usuario hace clic en ese botón, necesito abrir una ventana emergen...

1  Evento TRIGGER SELECT2 Cuando la opción de selección ya está seleccionada (opción de selección múltiple)  ( Event trigger select2 when the select option is already selected multiple selec ) 
Tengo una opción seleccionada como esta: <select class="competence"> <option>Android</option> <option>PHP</option> <option>RoR</option> <op...

0  Selección de la lista de opciones en "Select2" en IE8 con WebDriver  ( Selecting from the option list in select2 in ie8 with webdriver ) 
Tengo un problema que simula seleccionando de la lista de opciones en "Select2" en IE8 usando Selenium WebDriver. El problema es seleccionar de los elementos ...

0  Pantalla Subcategoría desplegable en las páginas de subcategoría de woocommerce [cerrado]  ( Display subcategory dropdown on woocommerce subcategory pages ) 
cerrado. Esta pregunta necesita Detalles de depuración . Actualmente no está aceptando respuestas. ...

4  Ocultar elementos seleccionados en Select2  ( Hide selected items in select2 ) 
Estoy tratando de usarla Select2 Elemento de jQuery para mejorar un elemento img { width: auto9; height: auto; max-width: 100%; vertical-align: mid...

2  Cómo administrar una matriz como valores de opción en Seleccionar usando Select2  ( How to give an array as option values in select using select2 ) 
Este es mi HTML <select class="compare-tag1"> </select> Esta es la matriz que quiero estar allí como valores de opción en la clase de selección anteri...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos