Geselecteerde optie van selectievak

Ik wil een optie instellen die eerder is geselecteerd om op paginabelasting te worden weergegeven. Ik heb het geprobeerd met de volgende code:

$("#gate").val('Gateway 2');

met

<select id="gate">
    <option value='null'>- choose -</option>
    <option value='gateway_1'>Gateway 1</option>
    <option value='gateway_2'>Gateway 2</option>
</select>

Maar dit werkt niet. Eventuele ideeën?


Antwoord 1, Autoriteit 100%

Dit zou zeker moeten werken. Hier is een demo . Zorg ervoor dat u uw code hebt geplaatst in een $(document).ready:

$(function() {
    $("#gate").val('gateway_2');
});

Antwoord 2, Autoriteit 34%

$(document).ready(function() {
    $("#gate option[value='Gateway 2']").prop('selected', true);
    // you need to specify id of combo to set right combo, if more than one combo
});

Antwoord 3, Autoriteit 8%

$('#gate').val('Gateway 2').prop('selected', true);


Antwoord 4, Autoriteit 3%

Ik heb gevonden met de methode JQuery .val () om een ​​aanzienlijk nadeel te hebben.

<select id="gate"></select>
$("#gate").val("Gateway 2");

Als dit selectievakje (of een ander ingangsobject) in een formulier staat en er is een resetknop die in het formulier wordt gebruikt, wanneer de knop RESET wordt geklikt, wordt de ingestelde waarde gewist en niet gereset naar de beginwaarde zou verwachten.

Dit lijkt het beste voor mij te werken.

voor selectievakjes

<select id="gate"></select>
$("#gate option[value='Gateway 2']").attr("selected", true);

Voor tekstingangen

<input type="text" id="gate" />
$("#gate").attr("value", "your desired value")

Voor Textarea-ingangen

<textarea id="gate"></textarea>
$("#gate").html("your desired value")

voor selectievakjes

<input type="checkbox" id="gate" />
$("#gate option[value='Gateway 2']").attr("checked", true);

voor radioetsen

<input type="radio" id="gate" value="this"/> or <input type="radio" id="gate" value="that"/>
$("#gate[value='this']").attr("checked", true);

Antwoord 5, Autoriteit 3%

 $("#form-field").val("5").trigger("change");

Antwoord 6

Dat werkt prima. Zie deze Fiddle: http://jsfiddle.net/kveal/

Het is mogelijk dat u uw jQuery in een $(document).ready()Handler?

Mogelijk, kunt u twee elementen hebben die dezelfde ID hebben?


Antwoord 7

Dit zou een andere optie zijn:

$('.id_100 option[value=val2]').prop('selected', true);

Antwoord 8

Ik had hetzelfde probleem.

Oplossing: voeg een vernieuwing toe.

$("#gate").val('Gateway 2');
$("#gate").selectmenu('refresh');

Antwoord 9

Sommige gevallen kunnen

zijn

$('#gate option[value='+data.Gateway2+']').attr('selected', true);

Antwoord 10

Ik weet dat er verschillende iteraties van antwoorden zijn, maar nu vereist dit geen jQuery of andere externe bibliotheek en kan vrij eenvoudig worden bereikt met het volgende.

document.querySelector("#gate option[value='Gateway 2']").setAttribute('selected',true);
<select id="gate">
    <option value='null'>- choose -</option>
    <option value='Gateway 1'>Gateway 1</option>
    <option value='Gateway 2'>Gateway 2</option>
</select>

Antwoord 11

Mijn probleem

get_courses(); //// To load the course list
$("#course").val(course); //// Setting default value of the list

Ik had hetzelfde probleem. Het enige verschil met jouw code is dat ik de selectiebox aan het laden was via een ajax-aanroep en zodra de ajax-aanroep werd uitgevoerd, had ik de standaardwaarde van de selectiebox ingesteld

De oplossing

get_courses();
   setTimeout(function() {
     $("#course").val(course);
  }, 10);

Antwoord 12

Ik weet dat dit een geaccepteerd antwoord heeft, maar bij het lezen van de antwoorden op het antwoord, zie ik enkele dingen die ik kan ophelderen die andere mensen kunnen helpen die problemen hebben met gebeurtenissen die niet worden geactiveerd na een waardewijziging.

Hiermee wordt de waarde in de vervolgkeuzelijst geselecteerd:

$("#gate").val("gateway_2")

Als dit select-element JQueryUI of een andere JQuery-wrapper gebruikt, gebruik dan de vernieuwingsmethode van de wrapper om de gebruikersinterface bij te werken om aan te tonen dat de waarde is geselecteerd. Het onderstaande voorbeeld is voor JQueryUI, maar u zult de documentatie voor de wrapper die u gebruikt moeten bekijken om de juiste methode voor het vernieuwen te bepalen:

$("#gate").selectmenu("refresh");

Als er een gebeurtenis is die moet worden geactiveerd, zoals een wijzigingsgebeurtenis, moet u die handmatig activeren, omdat het wijzigen van de waarde de gebeurtenis niet activeert. Het evenement dat je moet activeren, hangt af van hoe het evenement is gemaakt:

Als de gebeurtenis is gemaakt met JQuery, d.w.z. $(“#gate”).on(“change”,function(){}), activeer dan de gebeurtenis met de onderstaande methode:

$("#gate").change();

Als de gebeurtenis is gemaakt met een standaard JavaScript-gebeurtenis, d.w.z. activeer de gebeurtenis dan met de onderstaande methode:

var JSElem = $("#gate")[0];
if ("createEvent" in document) {
    var evt = document.createEvent("HTMLEvents");
    evt.initEvent("change", false, true);
    JSElem.dispatchEvent(evt);
} else {
    JSElem.fireEvent("onchange");
}

Antwoord 13

Ik had een probleem waarbij de waarde niet was ingesteld vanwege een syntaxisfout vóór de aanroep.

$("#someId").value(33); //script bailed here without showing any errors Note: .value instead of .val
$("#gate").val('Gateway 2'); //this line didn't work.

Controleer op syntaxisfouten vóór de oproep.


Antwoord 14

$(function() {
$("#demo").val('hello');
});

Antwoord 15

// Make option have a "selected" attribute using jQuery
var yourValue = "Gateway 2";
$("#gate").find('option').each(function( i, opt ) {
    if( opt.value === yourValue ) 
        $(opt).attr('selected', 'selected');
});

Antwoord 16

Toevoeging aan @icksde en @Korah (thx beide!)

Bij het bouwen van de optiesmet AJAXkan document.ready worden geactiveerd voordat de lijst is gemaakt, dus

Dit werkt niet

$(document).ready(function() {
    $("#gate").val('Gateway 2');
});

Dit doet het

Een time-out werkt wel, maar zoals @icksde zegt is het kwetsbaar (ik had eigenlijk 20 ms nodig in plaats van 10 ms). Het is beter om het als volgt in de AJAX-functie te plaatsen:

$("#someObject").change(function() {
    $.get("website/page.php", {parameters}, function(data) {
        $("#gate").append("<option value='Gateway 2'">" + "Gateway 2" + "</option>");
        $("#gate").val('Gateway 2');
    }, "json");
});

Other episodes