2011-12-08 3 views
-1

J'ai quelques boîtes de sélection comme les suivantes:Comment manipuler une boîte de sélection en utilisant jquery?

<select id="my_box1" rel="cal_10"> 
    <option value="A"></option> 
</select> 

<select id="my_box2" rel="cal_10.50"> 
    <option value="A"></option> 
</select> 

.... 

<select id="my_boxn"> 
    <option value="B"></option> 
</select> 

Lors du changement, je veux ajouter de la valeur liée (qui est de 10 et 10,50) que lorsque les boîtes de sélection a la même valeur d'option.

Par exemple: si la première et la deuxième zone de sélection ont une valeur d'option A, je souhaite l'ajouter.

Comment puis-je faire cela en utilisant jQuery?

+2

Que voulez-vous dire par « ajouter » eux? Voulez-vous dire d'extraire la valeur numérique du 'rel', et les ajouter? Est-ce seulement pour les deux premiers éléments sélectionnés, ou tous ceux qui ont le type d'ID 'my_box ...'. – RightSaidFred

+0

essayez-vous de faire l'addition mathématique ou l'ajouter en tant que mettre l'élément? – Val

+0

@righSaidfred Merci, oui ajout mathématique la valeur numérique jusqu'à nième élément lorsque tous les éléments ont la même valeur d'option – mymotherland

Répondre

0

Quelque chose comme ça, je crois:

$(function() { 
$('select#my_box1, select#my_box2').bind('change', function() { 
if ($('select#my_box1').val() == $('select#my_box2').val()) 
    $('select#my_box2').append('<option value="10">10</option><option value="10.50">10.50</option>'); 
else $('select#my_box2').find('option[value="10"], option[value="10.50"]').remove(); 
}); 
}); 
1

Eh bien, je ne peux vraiment pas dire exactement ce que vous demandez, donc je vais juste deviner.

Je devine que, lorsqu'un élément select reçoit un événement change, nous devons trouver tous les autres où la valeur sélectionne sélectionnée est la même, et somme la partie numérique de l'attribut rel.

Si oui, vous pouvez le faire:

var boxes = $('select[id^="my_box"]'); 

boxes.on('change', function() { 

    var n = 0, 
     val = this.value; 
    boxes.each(function() { 
      if(this.value === val) { 
       n += +$(this).attr('rel').replace('cal_',''); 
      } 
     }); 

    alert(n); 
}); 

Si vous utilisez une version de jQuery plus que 1.7, puis utilisez boxes.bind au lieu de boxes.on.

0

J'ai essayé par le code ci-dessous,

$('select').change(function(){ 
    var totalWeight = 0; 
    var post_array = []; 
       var actual_val = value; 
       //alert(actual_val); 
       var x=0; 
       $("select").each(function(index, selectedObj) { 
        current = $(this).val(); 

        var combined = $(this).attr('rel'); 
        if(combined!=undefined) 
        { 
         combined = combined.split("_"); 
         var is_combined = combined[0]; 
         var combined_pid = combined[1]; 

         if(actual_val == current && is_combined == "cal"){ 
          post_array[x++] = combined_pid ; 
          totalWeight+=parseFloat(combined_pid); 
         } 
        } 
       }); 
       alert(totalWeight); 
}); 

Je vais obtenir ma valeur totale totalWeight

Questions connexes