问题描述:
在做菜单的修改操作时,菜单的是否为当前状态总是修改不了。
(如上图,无论选择是还是否,都无法改变)
错误代码如下:
$(function(){
/*调取修改信息*/
$(".edit").click(function(){
var url = $(this).attr("oprUrl");
$.getJSON(url, function(json){
$("fieldset input[name='id']").val(json.data.ID);
$("fieldset input[name='name']").val(json.data.name);
$("fieldset input[name='link']").val(json.data.thelink);
$("fieldset input[name='describe']").val(json.data.describe);
$("fieldset input[name='current']").val(json.data.current);
if(json.data.current == "current"){
$("#cyes").click();
}else{
$("#cno").click();
}
$("#selparent").val(json.data.parentID);//设置父级菜单显示内容
});
});
});
对应页面代码:
<p style="border:none;">
<label>是否为当前状态</label>
<input id="cyes" type="radio" name="current" value="current" checked="" /> 是<br />
<input id="cno" type="radio" name="current" value="" checked=""/> 否
</p>
错误原因:
在调取修改信息的js方法中,有一句“ $("fieldset input[name='current']").val(json.data.current); ”。即:已经设置了name为current的radio的值,无论怎样点击radio,其值都是“ json.data.current ”,不会改变。
-----------------------------------------------------------------------------------------
错误演示代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>错误演示</title>
<script type="text/javascript" src="jquery-1.8.2.min.js"></script>
<script type="text/javascript">
$(function(){
$("input[name='aa']").val('otherval');
$("#btn").click(function(){
var val = $("input[name='aa']").val();
alert(val);
});
});
</script>
</head>
<body>
<input id="a" type="radio" name="aa" value="a" />a<br />
<input id="b" type="radio" name="aa" value="b" />b<br />
<input id="c" type="radio" name="aa" value="c" />c<br />
<input type="button" id="btn" value="test" />
</body>
</html>
-----------------------------------------------------------------------------------------
总结:
避免以 “ $("input[name='aa']").val(); ”方式设置radio值。