2012-04-07 12 views
8

Así que tengo dos cajas de selección múltiple como estaSeleccionar varios valores en una caja de selección múltiple con Jquery

<select id="foo" multiple="multiple"> 
    <option value="1">Option 1</option> 
    <option value="2">Option 2</option> 
</select> 

<select id="bar" multiple="multiple"> 
    <option value="1">Opt 1</option> 
    <option value="2">Opt 2</option> 
    <option value="3">Opt 3</option> 
    <option value="4">Opt 4</option> 
</select> 
<a href="#" onclick="select()">Select</a> 

Lo que estoy tratando de hacer es que cuando 'Seleccionar' se hace clic, cualquier opción de "# bar "que tiene el mismo valor con una opción en" #foo "sería seleccionado. En este caso, debe seleccionarse Opt 1 y Opt 2 en "#bar". No tengo idea de por qué mi javascript no funcionará. Sé que debe ser algo muy simple. Simplemente no puedo verlo. :( Así que mi función JavaScript es como sigue:

function select(){ 
    var vals = new Array(); 
    var iter = 0; 
    $("#foo option").each(function(){ 
     var v = $(this).val(); 
     $('#bar option').each(function(){ 
      if ($(this).val() == v) 
      { 
       vals[iter] = v; 
       iter++; 
       break; 
      } 
     }); 
    }); 
    $("#bar").val(vals); 
} 

Respuesta

5

ACTUALIZACIÓN después de ver el ejemplo de KON

DEMO

$("#sel").click(function(e) { 
    e.preventDefault(); // cancel the link itself 
    $("#bar").val($("#foo").val()); 
}); 

<a href="#" id="sel">Select</a> 

ejemplo mayor utilizando cada

DEMO

$("#sel").click(function(e) { // when link clicked 
    e.preventDefault(); 
    $("#foo option:selected ").each(function(){ 
    var v = $(this).attr("value"); // first select's value 
    $('#bar option').each(function(){ 
     if ($(this).attr("value") == v) { 
     $(this).attr("selected",true); // select if same value 
     } 
    }); 
    }); 
}) 
+0

1 Votación descendente porque? – mplungjan

5

mira esto http://jsfiddle.net/NtF8J/

html

<select multiple> 
    <option value="1">Option 1</option> 
    <option value="2">Option 2</option> 
    <option value="3">Option 3</option> 
    <option value="4">Option 4</option> 
</select> 

<select multiple> 
    <option value="1">Option 1</option> 
    <option value="2">Option 2</option> 
    <option value="3">Option 3</option> 
    <option value="4">Option 4</option> 
</select> 

<button> random </button>​ 

jQuery

$(function(){ 
    $(document.body).delegate(
    'select:first', 'change', function(){ 
     $('select:not(:first)').val(
     $(this).val() 
    ) 
    } 
) 
    .delegate(
    'button', 'click', function(){ 
    $('select').val([1,2,3,4].filter(function(){return!!Math.round(Math.random() * 1)})) 
    } 
) 
}); 



​ 
+0

Al publicar sus respuestas, asegúrese de incluir su código. Los violines no duran para siempre y el objetivo de SO es crear un repositorio duradero de buenas preguntas con buenas respuestas. Los enlaces mueren Queremos que otros se beneficien de tu conocimiento. – mrtsherman

+0

Disculpas, no sabía que no durarían para siempre. – kon

+0

No hay problema. Edité tu pregunta para que incluyas el código. +1 para una respuesta bien codificada. – mrtsherman

Cuestiones relacionadas