我试图通过javascript设置单选按钮的值。但我无法这样做。我试图做的是有4个单选按钮,其中一个已被选中。如果我选择其他一些单选按钮并单击“刷新”,则应选择默认单选按钮。
http://jsfiddle.net/ds345/Un8XK/1/
HTML:
<fieldset data-role="controlgroup" data-type="vertical">
<input type="radio" name="radio" id="x" data-theme="a" />
<label for="x" style="color: White">X</label>
<input type="radio" name="radio" id="y" onclick="axisonoff(this)" data-theme="a" />
<label for="y" style="color: White">Y</label>
<input type="radio" name="radio" id="z" data-theme="a" />
<label for="z" >Z</label>
<input type="radio" name="radio" id="none" data-theme="a" />
<label for="none" style="color: White">None</label>
</fieldset>
<button id = "Refresh" value="Refresh">Refresh</button>
JS:
$(document).ready(function () {
$("#none").attr("checked", true).checkboxradio("refresh"); // if this line is not present initially then it works for the 1st refresh.
});
$("#Refresh").click(function(){
$("#x").attr("checked", false).checkboxradio("refresh");
$("#y").attr("checked", false).checkboxradio("refresh");
$("#z").attr("checked", false).checkboxradio("refresh");
$("#none").attr("checked", true).checkboxradio("refresh");
});
我确信我错过了一些非常小但却无法弄清楚为什么这种方法不起作用。
使用的工具:Javascript,Jquery 1.9和JQuery mobile 1.3
谢谢,
Deeksha
答案 0 :(得分:5)
在处理布尔属性时,您应该使用prop
而不是attr
。
.attr("checked", false)
会向您的元素添加checked="false"
。在HTML中,<input checked="false" .../>
与<input checked="true" .../>
相同,或仅<input checked .../>
作为属性只需要在元素上出现它就可以激活它。
请参见JSFiddle example。
将代码更改为使用.prop()
代替:
$("#none").prop("checked", false)...
以下是JSFiddle演示的固定版本:http://jsfiddle.net/Un8XK/8/
答案 1 :(得分:0)
您错过的是不需要脚本。只需使用带有重置按钮的表单:
<form>
<input type="radio" name="radio" value="0" checked>0<br>
<input type="radio" name="radio" value="1">1<br>
<input type="radio" name="radio" value="2">2<br>
<input type="radio" name="radio" value="3">3<br>
<input type="reset">
</form>
如果您确实必须使用脚本,只需在表单中添加一个按钮,即可将单选按钮恢复为默认值:
<input type="button" onclick="reset(this.form.radio);" value="Script reset">
和一个功能:
<script>
function reset(els) {
for (var i=0, iLen=els.length; i<iLen; i++) {
els[i].checked = els[i].defaultChecked;
}
}
</script>