确定jQuery按钮的选定状态

时间:2010-06-01 01:52:46

标签: asp.net jquery jquery-ui

我在.net页面中有两个单选按钮,它们被转换为jQuery按钮la http://jqueryui.com/demos/button/#radio

当页面加载时,我选中了按钮2。单击按钮时,我正在触发回发事件。问题是你可以点击默认情况下在初始加载时选择的那个按钮,即按钮2,触发回发但是后面的.net代码中没有调用事件处理程序,因为单选按钮已被归类为选中(和在正常情况下不会允许回发发射)。

为了解决这个问题,我添加了e.PreventDefault()方法,但这会导致单击按钮1时出现问题,因为在调用单击处理程序之前,按钮设置为选中状态。因此,在以下代码中的每种情况下都会调用e.PreventDefault():

$(document).ready(function(){
    $("[id*='rbPayable']").click(function(e){
        if ($("[id*='rbPayable']").attr("checked"))
            e.preventDefault();
        else
            setTimeout('__doPostBack(\'this.id\',\'\')', 0)
    })
    $("[id*='rbReceivable']").click(function(e){
        if ($("[id*='rbReceivable']").attr("checked"))
            e.preventDefault();
        else
            setTimeout('__doPostBack(\'this.id\',\'\')', 0)
    })
});

加载页面并有效执行以下操作的最佳方式是: '如果选中rbReceivable,则不要做任何其他事情,否则进行回发。'

2 个答案:

答案 0 :(得分:0)

在这里尝试类似的东西

$(document).ready(function() {
    $('#radio').buttonset();

    // create a handle for the initially checked button.
    var checkedButton = $('.radio:checked');        

    // assuming all your radio buttons have 'radio' classname
    $('.radio').click(function() {
        var button = $(this);
        if ( button[0].id == checkedButton[0].id ) {
            return false;
        } else {
            // do stuff
            checkedButton = button;
        }
    });
});

答案 1 :(得分:0)

我用另一种方式解决了这个问题:

$(document).ready(function(){
    if ($("[id*='rbReceivable']").attr("checked"))
    {
        $("[id*='rbPayable']").click(function(e){
            setTimeout('__doPostBack(\'this.id\',\'\')', 0)
        })
    }
    else
    {
        $("[id*='rbPayable']").click(function(e){
            setTimeout('__doPostBack(\'this.id\',\'\')', 0)
        })
    }
});

当选中的按钮加载为选中状态时,执行此操作会在另一个按钮上设置单击处理程序。