12
votes

jQuery supprimer des options de sélection en fonction d'une autre sélection sélectionnée (besoin de prise en charge de tous les navigateurs)

dire que j'ai cette liste déroulante: xxx pré>

Je le souhaite afin que lorsque l'utilisateur sélectionne 1, c'est la chose que l'utilisateur peut choisir pour Dropdown 2: P>

jQuery.fn.filterOn = function(radio, values) {
    return this.each(function() {
        var select = this;
        var options = [];
        $(select).find('option').each(function() {
            options.push({value: $(this).val(), text: $(this).text()});
        });
        $(select).data('options', options);
        $(radio).click(function() {
            var options = $(select).empty().data('options');
            var haystack = values[$(this).attr('id')];
            $.each(options, function(i) {
                var option = options[i];
                if($.inArray(option.value, haystack) !== -1) {
                    $(select).append(
                    $('<option>').text(option.text).val(option.value)
                    );
                }
            });
        });            
    });
};


0 commentaires

5 Réponses :


1
votes

pour l'enregistrement vous Ne pas supprimer les options dans une liste de sélection dans Internet Explorer.


2 commentaires

Je pense qu'il veut dire enlever plutôt que de désactiver.


Oh chère monstre de spaghetti volant! C'est un raccourpateur d'URL!



15
votes

Ceci fonctionne (testé dans Safari 4.0.1, FF 3.0.13):

<select id="theOptions1">
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
</select>
<br />
<select id="theOptions2">
  <option value="a">a</option>
  <option value="b">b</option>
  <option value="c">c</option>
</select>


0 commentaires

9
votes

Vous pouvez ajouter des cours à votre

alors Faites ceci: xxx


2 commentaires

J'aime ça mieux. Juste une petite correction - il devrait être: $ ('# theoptions2'). HTML (...


Jolie lisse. Modifie le code de signalisation, mais dans l'ensemble, très étendu.



0
votes

En réalité, l'utilisation du code ci-dessous supprimera une option de liste déroulante, une option de liste déroulante, tant que ce n'est pas l'option sélectionnée (elle ne fonctionnera pas sur "A" sans désélectionner d'abord cette option):

var dropDownField = $('#theOptions2');
if ($('#theOptions1').val() == "2") {
    dropDownField.children('option:contains("c")').remove();
}
if ($('#theOptions1').val() == "3") {
    $("#theOptions2 :selected").removeAttr("selected");
    $('#theOptions2').val('b');
    dropDownField.children('option:contains("a")').remove();
}


0 commentaires

0
votes

Essayez ceci. Cela fonctionnera certainement

p>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<form action="/Home/Ex2" method="post">
    <select class="ddl" id="A1" name="A1">
        <option value="">Select</option>
        <option value="1">A</option>
        <option value="2">B</option>
        <option value="3">C</option>
        <option value="4">D</option>
    </select>
    <hr />
    <select class="ddl" id="A2" name="A2">
        <option value="">Select</option>
        <option value="1">A</option>
        <option value="2">B</option>
        <option value="3">C</option>
        <option value="4">D</option>
    </select>
    <hr />
    <select class="ddl" id="A3" name="A3">
        <option value="">Select</option>
        <option value="1">A</option>
        <option value="2">B</option>
        <option value="3">C</option>
        <option value="4">D</option>
    </select>
    <hr />
    <select class="ddl" id="A4" name="A4">
        <option value="">Select</option>
        <option value="1">A</option>
        <option value="2">B</option>
        <option value="3">C</option>
        <option value="4">D</option>
    </select>
    <hr />
    <input type="submit" name="submit" value="Save Data" id="btnSubmit" />
</form>


0 commentaires