林秀栋的技术博客

单/复选框、下拉框的选择与是否选中的判断

单/复选框

<!-- 单选框 -->
<input type="radio" class='a1' name="sex" value="男"/><input type="radio" class='a1' name="sex" value="女"/><!-- 复选框 -->
<input type="checkbox" name="city" value="1">温州
<input type="checkbox" name="city" value="2">杭州
<input type="checkbox" name="city" value="3" checked>上海

jq写法

获取被选中元素

var a = $('input:radio[name="sex"]:checked');
//:checked可获取所有被选中的单选框/复选框
//$('.a1[checked]')也可获取被选中元素,但只能获取页面加载时被选中的元素,之后即便选中项改变这个值也不会变

获取及改变元素的选中状态

$('.a1').eq(0).attr("checked", true); //true和false可改变相应选项是否选中

但是,若用上面方法获取选中状态,会返回undefined

console.log($('.a1').eq(0).attr("checked")); //会返回undefined
//原因:因为jq的attr在页面加载完后就不会改变,如果加载完后.a1被选中,之后就会一直返回checked;没被选择则返回undefined。
//解决方法:改用prop --> $('.a1').eq(0).prop("checked") --> 返回true/false

复选框写法与单选框相同,获取对象的属性值时,多个对象没用.eq()等区分时返回第一个的属性值

js写法

dom.checked -->根据是否选中返回true/false
dom.checked = true/false; --> 改变选中状态

下拉框

<select id="s">
    <option value="txt" id="a">txt</option>
    <option value="btn" id="b">btn</option>
</select>

jq写法

$('#s').val(); //获取选中项的值
$("#s option:checked"); //获取被选中的元素,下同
$("#s option:selected");
//获取被选中元素,同单/复选框,只会获取初次加载后的状态。且checked无效,要用selected
$("#s option[selected]");
$("#s option").eq(0).attr("selected", true); //改变是否选中的状态,checked无效
//获取选中状态,attr与prop的效果同单/复选框,但checked无效,要用selected
$("#s option").eq(0).attr("selected");
$("#s option").eq(0).prop("selected");

js写法

document.getElementById("s"); //获取选中的值
document.getElementById("s").value = 'btn'; //改变选中的值
document.getElementById("s").options[1].selected = true; //指定选中项
console.log(document.getElementById("s").options[1].selected); //返回该项是否选中