Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Cómo marcar y desmarcar opciones de un select multiple con JQuery? Framework MaterializeCss

4 de diciembre de 2017

Hola qué tal les va?, estoy haciendo un formulario para una aplicacion y estoy usando el framework Materializecss. Tengo varios selects multiples y selects simples que basicamente integran todo el formulario y debo manejar dichos selects por medio de JS/JQuery pues la idea es que la aplicación sea lo más dinámica posible. Tengo el siguiente fragmento de codigo para mostrar un ejemplo de como son mis selects y asi poder explicar mejor el problema que tengo:

<div class="row">
  <span class="mostrar"></span>
  <div>
 
<div class="row">
  <div class="elegir">
    <select id="and_or">
        <option selected>Y</option>
        <option>O</option>
    </select>
  </div>
</div>
 
<div class="row">
  <div class="colores">
    <select id="myid" multiple="multiple" name="Seleccion[]">
        <option value="Ninguno" selected>Ninguno</option>
        <option> Amarillo</option>
        <option>Azul</option>
        <option>Rojo</option>
      </select>
  </div>
</div>
var ninguno = true;
 
function displayValores() {
  var selectValues = $("#myid").val() || [];
  var valorSelect1 = $("#and_or").val();
 
  // si Ninguno está marcado pero se marca algo diferente
  if (ninguno && (selectValues.length > 1 || selectValues[0] != "Ninguno")) {
    // desmarcar ninguno
    $("#myid option[value=Ninguno]").removeAttr("selected");
    // actualizar los nuevos valores seleccionados
    selectValues = $("#myid").val()
    // indicar que Ninguno ya no está marcado
    ninguno = false;
  // si Ninguno no está marcado y se marca
  } else if (!ninguno && selectValues.indexOf("Ninguno") > -1) {
    // dejarlo como único valor
    $("#myid").val("Ninguno");
    // actualizar los nuevos valores seleccionados
    selectValues = $("#myid").val()
    // indicar que Ninguno ya está marcado
    ninguno = true;
  }
 
  $('.mostrar').html(selectValues.join(" " + valorSelect1 + " "));
}
 
$("select").change(displayValores);
displayValores();

Lo que estoy intentando lograr es que al seleccionar la opción Amarillo, Azul o Rojo la opción "Ninguno" (que esta seleccionada por defecto) se desmarque, que ya no aparezca seleccionada. Y cuando tenga colores seleccionados y decida darle click a la opción Ninguno, pues que esos colores se desmarquen, que ya no aparezcan seleccionados. El codigo JS anterior deberia funcionar a la perfección pero no es asi, cuando selecciono alguno de los colores, la casilla de selección (checkbox) de la opción "Ninguno" no se desmarca. No se si sea problema a nivel de framework ya que, cuando se crea un elemento select en materialize, automáticamente se crean unos elementos ul y li que estan asociados a ese elemento "Select". Es decir, basicamente el select esta asociado a un elemento

    y las opciones de ese select estan asociadas a elementos
  • . Cómo podría resolver este problema? algún script que me puedan suministrar o alguna pagina que pueda consultar donde tengan información sobre esto que me pueda servir de apoyo o guia? Espero puedan ayudarme.