asp.net - RadioButtonList 的 SelectedIndexChange 上的 JavaScript "confirm"

标签 asp.net javascript jquery radiobuttonlist autopostback

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

明确地说,我正在寻找一种方法,在用户做出选择并触发回发之前,用确认框提示用户。

最佳答案

为什么不使用点击事件呢?这就是客户端回发事件的绑定(bind)方式。例如,给定一个名为“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);                    
        }         
    });    
});

关于asp.net - RadioButtonList 的 SelectedIndexChange 上的 JavaScript "confirm",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2610705/

相关文章:

asp.net - 我的团队成员不支持使用 asp.net 中提供的验证控件(对于 Web 应用程序)

asp.net - 以编程方式将主机 header 添加到 IIS 7 上的网站

javascript - knexfile.js 不读取 Dotenv 变量

javascript - ASP.NET MVC 2 数据验证 : Make C# Regex work for both C# and JavaScript simultaneously?

php - 预加载php动态图片

javascript - javascript代码的简化

jquery - Foundation Zurb 均衡器问题

c# - 删除 ASP.Net 下拉 SelectedIndexChanged 不起作用

c# - Entity Framework 4 约定

javascript - 在 Angular 服务中使用 $http 和 $q 的正确方法?