Question

J'ai généré dynamiquement, un Déroulante pour laquelle j'ai besoin de modifier la valeur sélectionnée à l'aide de Jquery.

<select class="txtfield country" id="ctl00_MainContentAreaPlaceHolder_personalInformation_country" name="ctl00$MainContentAreaPlaceHolder$personalInformation$country"> 
    <option value="FJ">FIDJI</option>
    <option value="FI">FINLANDE</option>
    <option value="FR" selected="selected">FRANCE METROPOLITAINE</option>
    <option value="GA">GABON</option>
</select>

Une façon est d'utiliser le menu déroulant de l'intégralité de l'ID (notamment ctl00..) :

$j("#ctl00_MainContentAreaPlaceHolder_DeliveryPersonalInformation_country option[value='FR']").attr('selected', 'selected'); 

Est-il possible à l'aide de CSS je peux trouver l'élément et modifiez la valeur car je n'ai pas de préférence à l'aide de la dynamique d'un contrôle d'IDENTITÉ?

EDIT :

J'ai oublié de mentionner que j'ai 2 contrôles personnalisés sur la page avec la même liste déroulante nom.

donc contrôle personnalisé 1 génère:

<select class="txtfield ckgcountry" id="ctl00_MainContentAreaPlaceHolder_personalInformation_country" name="ctl00$MainContentAreaPlaceHolder$personalInformation$country">  ...
    <option value="ZW">ZIMBABWE</option>
</select>

et le client de Contrôle 2 génère:

<select class="txtfield country" id="ctl00_MainContentAreaPlaceHolder_personalInformation_country" name="ctl00$MainContentAreaPlaceHolder$personalInformation$country">
    <option value="FJ">FIDJI</option>
    <option value="FI">FINLANDE</option>
    <option value="FR" selected="selected">FRANCE METROPOLITAINE</option>
    <option value="GA">GABON</option>
</select>

Donc, en utilisant le code du changement de valeur de seulement le premier nom qu'il trouve dans les DOM, comment puis-je changer la valeur de la seconde...est-il un moyen de le faire à l'aide de CSS ?

Était-ce utile?

La solution

On dirait que vous utilisez ASP.NET.

Il est vraiment pas fiable d'utiliser l'ID complet de contrôle ASP.NET (postrendu) parce qu'il pourrait changer à un moment donné. La seule partie de l'ID qui est garanti de ne pas changer est la dernière partie de l'ID qui a été défini dans la propriété ID du contrôle ASP.NET.

Sélectionnez cet élément avec un sélecteur générique

// Unselect the currently selected item
$("select[id$='personalInformation_country'] option:selected").removeAttr("selected");

// Select the option at index 0
$("select[id$='personalInformation_country'] option:eq(0)").attr("selected","selected");

ou

// Select the option with value FR
$("select[id$='personalInformation_country'] option[value='FR']").attr("selected","selected");

Le $='personalInformation_country' correspondra à tous la fin de ID avec « personalInformation_country », qui ne devrait être qu'un!

Autres conseils

Entendez-vous comme cela?

$('select.country').val('FR');

Ceci permettra de définir la sélection pour tous les sélectionner des éléments avec la classe CSS "pays"

Si vous souhaitez localiser l'sélectionnez le meilleur, vous devez utiliser l'IDENTIFIANT et le Nom du ou de s'assurer qu'elle est imbriquée dans une manière que vous pouvez être sûr qu'il peut être situé.

par exemple

$('form[name=myForm] select.country').val('FR');//presuming there is only one

Il est difficile de dire sans voir le reste du balisage sur la page mais vous devez vous assurer uniquness afin que vous obteniez l'élément select correct si l'id est généralement le meilleur pari.

Si vous pouvez utiliser l'identifiant exactement comme cela a le meilleur perfrmance cependant vous avez demandé des options si ici il va.

A quelques options:

$('select.txtfield') trouverez toutes les sélections avec le txtfield de classe ne peuvent donc pas être unique.

Un meilleur pari $('select.txtfield.country') peut-être que je suppose est unique?

ou « piratage » pour webforms consiste à utiliser les extrémités avec le sélecteur

$('select[id$=personalInformation_country]')
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top