Question

Je suis tenté de mettre un select2 valeur à l'aide de jquery.C'est probablement une double question, mais j'ai lu les 30 réponses différentes sur ici et n'ai pas trouvé un qui résout mon problème.

Code HTML:

<div class="has_many_fields" data-required-has-many-fields-rows="1" id="location_account_associations"><input id="location_account_associations_attributes_0__destroy" name="location[account_associations_attributes][0][_destroy]" type="hidden" value="false" />
<div class="has_many_fields_row countable" id="location_account_associations_attributes_0">
    <div class="form__row form__row--spreadsheet">
        <div class="form__row__body">
            <div class="form__row__field-wrapper">
                <ul class="grid grid--no-gutters">
                    <li class="grid__6 grid__x--show">
                        Account Thing
                        <input id="location_account_associations_attributes_0_ab_account_id" name="location[account_associations_attributes][0][ab_account_id]" type="hidden" value="42" />
                    </li>
                    <li class="grid__5">
                        <select class="js-select2-combobox" id="location_account_associations_attributes_0_account_id" name="location[account_associations_attributes][0][account_id]" placeholder=" " reflection="#&lt;ActiveRecord::Reflection::AssociationReflection:0x012fb5asd200e8&gt;">
                            <option value=""></option>
                            <option value="1">Orange</option>
                            <option value="2">Apple</option>
                        </select>
                    </li>
                </ul>
            </div>
        </div>
    </div>
</div>

J'ai essayé plusieurs différentes approches pour obtenir des "Orange" pour être sélectionné.Notez que cette jQuery exécute lorsqu'une touche est pressée.Aussi, pour un certain nombre de raisons, le HTML n'est pas modifiable.Seul le jQuery peut être changé.

Javascript/jQuery:

(function() {
    $(document).on("keydown", function(e) {

        // ignore unless CTRL + ALT/COMMAND + N was pressed
        if (!(e.keyCode == 78 && e.ctrlKey && e.altKey )) return

        jQuery('[name*="[account_associations_attributes][0]').select2("val",1);
        jQuery('[name*="[account_associations_attributes][0]').select2("val","Orange");
     })
 }())
Était-ce utile?

La solution

Essayez ceci:
Vous pouvez le sélectionner par SELECT ID.
Démo en direct: http://jsfiddle.net/5y9mg/10/

  $(document).ready(function(){

    $(document).on("keydown", function(e) {

        // ignore unless CTRL + ALT/COMMAND + N was pressed
     if (!(e.keyCode == 78 && e.ctrlKey && e.altKey )) return;
        $('#location_account_associations_attributes_0_account_id option:eq(1)').prop('selected', true)
     });
});

Vous le sélectionnez également par ID et Valeur comme ceci:

 $('#location_account_associations_attributes_0_account_id option[value="1"]').prop('selected', true)

Autres conseils

a fini par trouver la solution.

jQuery('[name*="[account_associations_attributes][0]"]').select2('val', '1')

Détection de multiples pressions sur les touches, surtout avec des modificateurs, est très délicat.

Jetez un oeil à cet autre post et puis assurez-vous que votre événement keypress est de générer une plus résultat de base (quelque chose de simple, comme un alert() avant d'ajouter plus de comportement complexes (comme l'évolution des valeurs de la liste déroulante, qui peut également être difficile selon le navigateur et la liste elle-même.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top