我们有一个带有三个ListItem的RadioButtonList。当用户进行选择时,我们想要显示确认框。如果他们点击取消,我们只希望撤消选择更改。下面的代码在所有内容中工作正常--BUT-IE 7,8和9.在IE中,在返回false执行后没有选择ListItem,但在所有其他代码中,只有下面的代码,选择被撤消并且然后选择之前选择的项目,就像我们想要的那样。你不工作吗?
标记:
<asp:RadioButtonList ID="RadioButtonList1" runat="server" RepeatDirection="Horizontal" OnSelectedIndexChanged="RadioButtonList1_SelectedIndexChanged" AutoPostBack="False">
<asp:ListItem Selected="True" onClick="return confirmSubmit(this, event);">Value 1</asp:ListItem>
<asp:ListItem onClick="return confirmSubmit(this, event);">Value 2</asp:ListItem>
<asp:ListItem onClick="return confirmSubmit(this, event);">Value 3</asp:ListItem>
</asp:RadioButtonList>
使用Javascript:
function confirmSubmit(listItem, e) {
var agree = confirm("Do you really want to change the value?");
if (!agree) {
return false;
}
else {
document.forms[0].submit();
}
}
答案 0 :(得分:1)
最直接的跨浏览器兼容的处理方式是使用jQuery javascript库。以下是使用可与您的代码配合使用的jQuery的解决方案。
<script type="text/javascript">
var rblContainer;
var lastChecked;
$(document).ready(function () {
rblContainer = $('#<%= RadioButtonList1.ClientID %>');
lastChecked = rblContainer.children().find('input[checked]');
});
function confirmSubmit(listItem, e) {
var l = $(listItem);
var agree = confirm("Do you really want to change the recipient type?");
if (!agree) {
lastChecked.attr("checked", "checked");
return false;
}
else {
lastChecked = l;
document.forms[0].submit();
}
}
</script>