IE在javascript函数返回false后取消选择RadioButtonList

时间:2011-08-03 22:09:47

标签: javascript asp.net internet-explorer

我们有一个带有三个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();
    }
}

1 个答案:

答案 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>