问题
I want to set a option that was selected previously to be displayed on page load. I tried it with the following code:
$("#gate").val('Gateway 2');
with
<select id="gate">
<option value='null'>- choose -</option>
<option value='gateway_1'>Gateway 1</option>
<option value='gateway_2'>Gateway 2</option>
</select>
But this does not work. Any ideas?
回答1:
This definitely should work. Here's a demo. Make sure you have placed your code into a $(document).ready
:
$(function() {
$("#gate").val('gateway_2');
});
回答2:
$(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
});
回答3:
$('#gate').val('Gateway 2').prop('selected', true);
回答4:
I have found using the jQuery .val() method to have a significant drawback.
<select id="gate"></select>
$("#gate").val("Gateway 2");
If this select box (or any other input object) is in a form and there is a reset button used in the form, when the reset button is clicked the set value will get cleared and not reset to the beginning value as you would expect.
This seems to work the best for me.
For Select boxes
<select id="gate"></select>
$("#gate option[value='Gateway 2']").attr("selected", true);
For text inputs
<input type="text" id="gate" />
$("#gate").attr("value", "your desired value")
For textarea inputs
<textarea id="gate"></textarea>
$("#gate").html("your desired value")
For checkbox boxes
<input type="checkbox" id="gate" />
$("#gate option[value='Gateway 2']").attr("checked", true);
For radio buttons
<input type="radio" id="gate" value="this"/> or <input type="radio" id="gate" value="that"/>
$("#gate[value='this']").attr("checked", true);
回答5:
$("#form-field").val("5").trigger("change");
回答6:
That works fine. See this fiddle: http://jsfiddle.net/kveAL/
It is possible that you need to declare your jQuery in a $(document).ready()
handler?
Also, might you have two elements that have the same ID?
回答7:
This would be another option:
$('.id_100 option[value=val2]').prop('selected', true);
回答8:
I had the same problem.
Solution: add a refresh.
$("#gate").val('Gateway 2');
$("#gate").selectmenu('refresh');
回答9:
I know there are several iterations of answers but now this doesn't require jquery or any other external library and can be accomplished pretty easy just with the following.
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>
回答10:
Some cases may be
$('#gate option[value='+data.Gateway2+']').attr('selected', true);
回答11:
My problem
get_courses(); //// To load the course list
$("#course").val(course); //// Setting default value of the list
I had the same issue . The Only difference from your code is that I was loading the select box through an ajax call and soon as the ajax call was executed I had set the default value of the select box
The Solution
get_courses();
setTimeout(function() {
$("#course").val(course);
}, 10);
回答12:
I had a problem where the value was not set because of a syntax error before the call.
$("#someId").value(33); //script bailed here without showing any errors Note: .value instead of .val
$("#gate").val('Gateway 2'); //this line didn't work.
Check for syntax errors before the call.
回答13:
// 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');
});
回答14:
$(function() {
$("#demo").val('hello');
});
回答15:
Addition to @icksde and @Korah (thx both!)
When building the options with AJAX the document.ready may be triggered before the list is built, so
This doesn't work
$(document).ready(function() {
$("#gate").val('Gateway 2');
});
This does
A timeout does work but as @icksde says it's fragile (I did actually need 20ms in stead of 10ms). It's better to fit it inside the AJAX function like this:
$("#someObject").change(function() {
$.get("website/page.php", {parameters}, function(data) {
$("#gate").append("<option value='Gateway 2'">" + "Gateway 2" + "</option>");
$("#gate").val('Gateway 2');
}, "json");
});
来源:https://stackoverflow.com/questions/4680075/set-selected-option-of-select-box