Jquery - 设置表单选择字段“已选择”值仅在刷新后有效

时间:2011-01-16 10:27:23

标签: jquery forms select

我想使用表单选择字段供用户选择他们的居住国家/地区,其中显示基于IP的国家/地区作为默认值(加上旁边的IP地址);

位置信息(ipinfodb.com)正在运行。我正在将“country”和“ip”传递给该函数,该函数应修改select-field和ip adress

问题: IP地址有效,但选择字段仅在我点击刷新后更新。

有人可以告诉我为什么吗?

这是代码:
HTML

<select name="setup_changeCountry" id="setup_changeCountry">
     <option value="AL-Albania">Albanien</option>
     <option value="AD-Andorra">Andorra</option>
     <option value="AM-Armenia">Armenien</option>
     <option value="AU-Australia">Australien</option>
     ...
</select>
<div class="setup_IPInfo">
    <span>Your IP</span>
    <span class="ipAdress"> -- ip --</span>
</div>

使用Javascript / Jquery的

function morph(country,ip) >> passed from function, called on DOMContentLoaded
{
var ipAdress = ip;
$('.ipAdress').text(ipAdress);

var countryForm = country; 
$('#setup_changeCountry  option').each(function()
    {
    if ($(this).val().substr(0,2) == countryForm)
        {
        $(this).attr('selected', "true");
        }
    });
} 

感谢您提供有关如何解决此问题的任何线索。

频繁

3 个答案:

答案 0 :(得分:0)

选择=“已选择”未选中=“真”,因此:

$(this).attr('selected', 'selected');

(您也可以跳过var ipAdress并在下一行中传递ip

答案 1 :(得分:0)

你可以极大地简化循环,让jQuery完成工作:

$("#setup_changeCountry option[value$='" + country + "']").attr('selected', true);

确保:

  • 案件匹配(您的国家/地区必须以大写字母开头)
  • 在加载DOM后执行此代码,否则您可能会尝试选择一个尚不存在的选项

答案 2 :(得分:0)

你应该使用:

 $(document).ready(name_of_function);
通过这种方式,您可以运行该功能来选择国家/地区。您可以使用此功能:

function morph(country,ip){
    var ipAdress = ip;
    $('.ipAdress').text(ipAdress);
    var countryForm = country; 
    $("#setup_changeCountry option[value$='" + country + "']").attr('selected', true);
}