JavaScript在RadioButtonList的SelectedIndexChange上“确认”

时间:2010-04-09 20:32:00

标签: asp.net javascript jquery radiobuttonlist autopostback

我有一个RadioButtonList控件,我想在用户尝试更改索引时执行Javascript“确认”。目前AutoPostBack设置为TRUE。当然,我可以在javascript函数中调用__doPostBack等。我用jQuery尝试了一些东西,但是你必须担心mousedown与click然后总是有一个事实,你可以点击复选框标签来选择等等,任何人都有一个很好的解决方案吗?

要明确的是,我正在寻找一种方法,在用户选择之前使用确认框提示用户并触发回发。

1 个答案:

答案 0 :(得分:2)

为什么不使用点击事件?这是客户端回发事件的绑定方式。例如,给定名为“MyButtonList”的RadioButtonList,将呈现以下HTML:

<table id="MyButtonList" border="0">
  <tr>
    <td><input id="MyButtonList_0" type="radio" name="MyButtonList" value="1" checked="checked" /><label for="MyButtonList_0">Hello World</label></td>
  </tr><tr>
    <td><input id="MyButtonList_1" type="radio" name="MyButtonList" value="2" onclick="javascript:setTimeout('__doPostBack(\'MyButtonList$1\',\'\')', 0)" /><label for="MyButtonList_1">Hello World 2</label></td>
  </tr>
</table>

以下jQuery代码将完成您想要的任务:

已编辑以支持IE

var rbList = $("input[name='MyButtonList']");
var checkedRB = rbList.filter(":checked");


rbList.filter(":not(:checked)").each(function () {
    var origClick = this.onclick;
    this.onclick = null;

    $(this).click(function (evt) {   
        if(confirm("Post back?"))
        {
            origClick();
        }
        else
        {   
            if( evt.preventDefault ) { evt.preventDefault(); }
            evt.returnValue = false;

            checkedRB.attr("checked",true);                    
        }         
    });    
});