我正在创建的注册表单在选择下拉列表中有商业和住宅选项。
根据活动页面类型,我更改了默认的选定选项。
下面是html:
<select class="type_c" name="type_c"> // default selected is business
<option value="Business" selected="selected">Business</option>
<option value="Residential">Residential</option>
</select>
下面是我在每个页面的页脚中运行的代码,用于更改这些值:
$(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中是选中的,但在视觉上,“商务”选项是选中的!
谢谢。
发布于 2012-05-19 01:40:19
由于这是在初始值之后更改属性,因此从技术上讲,它是一个属性,您应该使用$(this).prop()
而不是$(this).attr()
。
另外,尝试将该值设置为true
而不是selected
$(this).prop('selected',true);
或者,您也可以设置select
元素的值:
$('.type_c').val(pageType);
发布于 2012-05-19 01:50:19
我将验证您返回的内容是否正确评估。我用下面的代码制作了一个空白的HTML页面。您可以看到,根据将"pageType“设置为什么字符串,所选选项的呈现方式会有所不同。
<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>
发布于 2012-05-19 04:19:12
我以前也遇到过这样的事情。火狐喜欢保存表单元素的状态,所以当页面重新加载时,它会显示上一次会话中的选择,即使它是通过JavaScript更改的。通常我必须从头开始加载页面(我转到url并按回车键,而不是重新加载)。
我不确定这是否会有帮助,但我以前也遇到过这种情况。
(我创建了第二个答案,因为这是完全不同的。)
https://stackoverflow.com/questions/10657224
复制相似问题