web-dev-qa-db-fra.com

Définition de la première option <select> comme sélectionnée

J'essaie de définir le premier des quelques-uns à définir comme sélectionné

J'ai

<select name="id[21]" class="atributosSort">
  <option value="107">1. Sin adaptadores de video (+$45)</option>
  <option value="108">2. Mini Displayport to DVI (+$112)</option>
  <option value="109">3. Mini Displayport to VGA</option>
</select>

J'ai essayé 

jQuery(".atributosSort")[0].selectedIndex = 0;

et

jQuery(".atributosSort option:first").attr('selected','selected');

tous les deux discutés à Comment faire en sorte que la première option de <select> soit sélectionnée avec jQuery? mais lorsque j'inspecte le DOM, aucun attribut n'est ajouté à aucun 

J'utilise jQuery () parce que je suis en mode noConflict. Cela pourrait-il être le problème?

Lorsque j'exécute les deux tentatives pour obtenir la valeur sélectionnée, aucune erreur ne se produit dans la console de script.

Une autre chose qui pourrait être pertinente est que je trie les options avec cette

function sortDropDownListByText() {
// Loop for each select element on the page.
jQuery("select").each(function() {

    // Keep track of the selected option.
    var selectedValue = jQuery(this).val();

    // Sort all the options by text. I could easily sort these by val.
    jQuery(this).html(jQuery("option", jQuery(this)).sort(function(a, b) {
        return a.text == b.text ? 0 : a.text < b.text ? -1 : 1
    }));

    // Select one option.
    //jQuery(this).val(selectedValue);

});
}

  // Use jQuery via jQuery(...)
 jQuery(document).ready(sortDropDownListByText);

J'ai commenté jQuery (this) .val (selectedValue); parce que je pensais que cette ligne définissait une option comme étant sélectionnée et que je ne peux pas la remplacer mais cela ne fait aucune différence.

Des idées? Merci

14
Juan Ignacio

As-tu essayé:

jQuery(".atributosSort option:first-child").attr("selected", true);

?

24
mattsven

J'utilise "Select one ..." comme première option, sans valeur définie. J'ai trouvé cela fonctionne pour moi:

//for elements having classname, get the first option and make it selected
$('.classname').find('option:first').attr('selected','selected');

Ceci est similaire à celui affiché par @NeXXeuS, mais le fera pour tous vos champs sélectionnés.

2
Bob

pour les nouvelles versions de jQuery: 

$(".atributosSort").prop("selectedIndex", 0)
1
Audee Velasco

Avez-vous essayé: (en mettant les parenthèses après "sortDropDownListByText" dans l'instruction "ready")

// Use jQuery via jQuery(...)
 jQuery(document).ready(sortDropDownListByText(););
0
dev4life

Avez-vous déjà essayé ce code? Je l'utilise pour réinitialiser mes listes déroulantes sur trop de projets utilisant jQuery:

// Use jQuery via jQuery(...)
 $("#yourTarget").val($("#yourTarget option:first").val());

J'espère que cela pourrait vous aider.

0
ArlanG
jQuery(document).ready(function () {
    jQuery(".atributosSort")[0].selectedIndex = 0;
});

par Bill le lézard ♦

est la meilleure réponse, il ne fait pas de bogue avec l'attribut sélectionné sur select.

0
Steve Ardianto

Faites-vous cela quand $(document).ready(...)?

Essaye ça:

jQuery(document).ready(function () {
    jQuery(".atributosSort")[0].selectedIndex = 0;
});
0
Roman