2016-06-14 1 views
0

J'ai deux champs qui ont les mêmes options. Je veux m'assurer que lorsque l'utilisateur sélectionne une option de l'un d'entre eux, le champ opposé aura la même option supprimée. Par conséquent, si un utilisateur sélectionne T. Edson comme Recipient, cette option sera supprimée sur le champ CCs.Comment lier deux champs choisis en supprimant les options les uns des autres

enter image description here

J'ai essayé ce qui suit comme quelqu'un a dit here mais ne semble pas fonctionner.

function checkAddressFields() { 
     var recipientField = $('#id_recipient'); 
     var ccsField = $('#id_ccs'); 
     console.log("Removing duplicate"); 
     $("#id_ccs option[value='"+recipientField.val()+"']").remove(); 
     ccsField.trigger("chosen:updated"); 
    } 
    $('#id_recipient').on('change', checkAddressFields); 
    $('#id_ccs').on('change', checkAddressFields); 

Répondre

1

Essayez cet exemple ..

$select = $('.select'); 
 
$select.on('change', function() { 
 
    var val = $(this).val(); 
 
    $notThis = $select.not($(this)); 
 
    $notThis.find('option').show(); 
 
    $notThis.find('option[value=' + val + ']').hide(); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<select class="select"> 
 
    <option>Select rec</option> 
 
    <option value="option1">Option 1</option> 
 
    <option value="option2">Option 2</option> 
 
    <option value="option3">Option 3</option> 
 
    <option value="option4">Option 4</option> 
 
    <option value="option5">Option 5</option> 
 
</select> 
 

 
<select class="select"> 
 
    <option>Select cc</option> 
 
    <option value="option1">Option 1</option> 
 
    <option value="option2">Option 2</option> 
 
    <option value="option3">Option 3</option> 
 
    <option value="option4">Option 4</option> 
 
    <option value="option5">Option 5</option> 
 
</select>

+0

'ccsField.find (" op tion [value = '"+ recipientField.val() +"'] ") hide();' Travaillé comme un charme. Merci. : o) –

0

Sans voir tout le code, il peut être un peu difficile, mais essayez quelque chose comme ça (en vous assurant que recipientField.val() est passé à checkAddressFields()):

$("#id_ccs option[value='+recipientField.val()+']").remove();