首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在<option>中更改选定属性后,<select>窗口不会更新

在<option>中更改选定属性后,<select>窗口不会更新
EN

Stack Overflow用户
提问于 2012-05-19 01:34:41
回答 4查看 5.6K关注 0票数 7

我正在创建的注册表单在选择下拉列表中有商业和住宅选项。

根据活动页面类型,我更改了默认的选定选项。

下面是html:

代码语言:javascript
运行
复制
<select class="type_c" name="type_c">  // default selected is business
    <option value="Business" selected="selected">Business</option>
    <option value="Residential">Residential</option>
</select>

下面是我在每个页面的页脚中运行的代码,用于更改这些值:

代码语言:javascript
运行
复制
$(function(){

    var pageType = getPageType(); // returns either 'Business' or 'Residential'

    $('.type_c option').each(function(){
        $(this).removeAttr('selected');
    });

    $('.type_c option').each(function(){
        if($(this).html() == pageType)
            $(this).attr('selected','selected')
    });

});

问题是,当它在“住宅”页面上时,“住宅”选项在DOM中是选中的,但在视觉上,“商务”选项是选中的!

谢谢。

EN

回答 4

Stack Overflow用户

发布于 2012-05-19 01:40:19

由于这是在初始值之后更改属性,因此从技术上讲,它是一个属性,您应该使用$(this).prop()而不是$(this).attr()

另外,尝试将该值设置为true而不是selected

$(this).prop('selected',true);

或者,您也可以设置select元素的值:

$('.type_c').val(pageType);

票数 4
EN

Stack Overflow用户

发布于 2012-05-19 01:50:19

我将验证您返回的内容是否正确评估。我用下面的代码制作了一个空白的HTML页面。您可以看到,根据将"pageType“设置为什么字符串,所选选项的呈现方式会有所不同。

代码语言:javascript
运行
复制
<html>

<head>
<script type="text/javascript" src="json2.min.js"> </script>
<script type="text/javascript" src="jquery-1.7.2.min.js"> </script>
<script type="text/javascript" src="jquery.cookie.js"> </script>
</head>

<script>
$(function(){

    var pageType = 'Residential'; // returns either 'Business' or 'Residential'

    $('.type_c option').each(function(){
        $(this).removeAttr('selected');
    });

    $('.type_c option').each(function(){
        if($(this).html() == pageType)
            $(this).attr('selected','selected')
    });

});

</script>

<body>

<select class="type_c" name="type_c">  // default selected is business
    <option value="Business" selected="selected">Business</option>
    <option value="Residential">Residential</option>
</select>



</body>
</html>
票数 0
EN

Stack Overflow用户

发布于 2012-05-19 04:19:12

我以前也遇到过这样的事情。火狐喜欢保存表单元素的状态,所以当页面重新加载时,它会显示上一次会话中的选择,即使它是通过JavaScript更改的。通常我必须从头开始加载页面(我转到url并按回车键,而不是重新加载)。

我不确定这是否会有帮助,但我以前也遇到过这种情况。

(我创建了第二个答案,因为这是完全不同的。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10657224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档