我想根据隐藏字段预设选择框的值。在表单中检测到错误后我需要这个,以避免用户再次自己设置值。 我通过设置隐藏字段服务器端的值来完成此操作。 我遇到的问题似乎是在我尝试设置所选值时尚未完成选择框。 任何人都知道如何解决这个问题(可能以一种非常不同的方式解决?)
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
<script type="text/javascript" charset="utf-8">
$(function(){
// this functions loads the state select box with states if a country with states is selected
$("select#countries").change(function(){
$.getJSON("/ajax/exhibition/getstates.php?idCountry="+$("select#countries").val(), function(j){
var options = '';
$.each(j, function(key, value){
options += '<option value="' + key + '">' + value + '</option>';
});
$("select#state").html(options);
});
});
});
$(document).ready(function(){
// preset the state select box on page ready
$('select#countries').change();
// set the selected value of the state select box
var foo = $('#statepreset').val();
$("select#state option[value="+foo+"]").attr('selected', 'selected');
});
</script>
答案 0 :(得分:2)
我会建议这种方法:
function initSelect(defaultVal) {
$("select#countries").change(function(){
$.getJSON("/ajax/exhibition/getstates.php?idCountry="+$("select#countries").val(), function(j){
var options = '';
$.each(j, function(key, value){
options += '<option value="' + key + '">' + value + '</option>';
});
$("select#state").html(options);
$("select#state option[value="+defaultVal+"]").attr('selected', 'selected');
});
}).change();
}
$(document).ready(function(){
initSelect($('#statepreset').val());
});
答案 1 :(得分:1)
快速解决这个问题的方法是在回调中(在getJSON回调中)放置修改状态选择的代码
$("select#countries").change(function(){
$.getJSON("/ajax/exhibition/getstates.php?idCountry="+$("select#countries").val(), function(j){
var options = '';
$.each(j, function(key, value){
options += '<option value="' + key + '">' + value + '</option>';
});
$("select#state").html(options);
// set the selected value of the state select box
var foo = $('#statepreset').val();
$("select#state option[value="+foo+"]").attr('selected', 'selected');
});
});
请记住,您提供给getJson调用的回调仅在服务器回复后执行。
答案 2 :(得分:0)
您可以将预选代码添加到getJson
的回调中<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
<script type="text/javascript" charset="utf-8">
$(function(){
// this functions loads the state select box with states if a country with states is selected
$("select#countries").change(function(){
$.getJSON("/ajax/exhibition/getstates.php?idCountry="+$("select#countries").val(), function(j){
var options = '';
$.each(j, function(key, value){
options += '<option value="' + key + '">' + value + '</option>';
});
$("select#state").html(options);
var foo = $('#statepreset').val();
$("select#state option[value="+foo+"]").attr('selected', 'selected');
});
});
});