jQuery触发器asp.net radiobutton点击更新面板内部

时间:2014-08-07 10:14:10

标签: javascript jquery asp.net

我有一些代码,用户选择通过jquery突出显示的'Package'。如何点击此div中的asp radiobutton并执行其“OnCheckChanged”事件?

$(document).ready(function () {
        $(".package-container").click(function (event) {
            $(this).closest('.radio-group-row').find('.package-title').removeClass('highlight');
            $(this).closest('.radio-group-row').find('.package-footer').removeClass('highlight');
            $(this).find('input:radio').prop('checked', true).click();
            $(this).find('.package-title').addClass('highlight');
            $(this).find('.package-footer').addClass('highlight');
        });
    });

我已经使用onclick()方法尝试了此代码,但是它会不断加载网络标签中的页面,Chrome会不断发布页面并最终在没有刷新的情况下延迟。

我所讨论的radiobutton是这样的:

<EclipseUI:CustomRadioButton runat="server" ID="RadioButton_Item" ClientIDMode="AutoID" ToolTip='<%# Eval("SystemValue") %>' GroupName="Package" OnCheckedChanged="RadioButton_Package_OnCheckedChanged" AutoPostBack="True"/>

如何让jquery执行此radiobutton的oncheckedchange事件?

修改

$(document).ready(function () {
        $(".package-container").click(function (event) {
            $(this).closest('.radio-group-row').find('.package-title').removeClass('highlight');
            $(this).closest('.radio-group-row').find('.package-footer').removeClass('highlight');
            $(this).find('input:radio').prop('checked', true).click();
            $(this).find('.package-title').addClass('highlight');
            $(this).find('.package-footer').addClass('highlight');
        });
    });



    var prm = Sys.WebForms.PageRequestManager.getInstance();

    prm.add_endRequest(function (event) {
        var currPackage = $("#HF_Package").val();

        $("#" + currPackage).closest('.radio-group-row').find('.package-title').removeClass('highlight');
        $("#" + currPackage).closest('.radio-group-row').find('.package-footer').removeClass('highlight');
        $("#" + currPackage).find('input:radio').prop('checked', true);
        $("#" + currPackage).find('.package-title').addClass('highlight');
        $("#" + currPackage).find('.package-footer').addClass('highlight');
    });

我的完整jquery代码如下所示。后一部分用于回发以确保突出显示所选包,我从隐藏字段中获取此值并找到该值的div即包。

1 个答案:

答案 0 :(得分:1)

在更新面板中,您的DOM元素将替换为从异步回发返回的内容,以便重置事件绑定。

您需要在2个事件上附加事件处理程序:

(function($){ 

  var bindEvents =  function(){
   // bind events here;
  };

  // initial load
  $(document).ready( bindEvents);

  // every async load by update panel
  Sys.WebForms.PageRequestManager.getInstance().add_endRequest(bindEvents);

})(jQuery);  

触发回发,尝试添加按钮(如果你不显示它,你可以用css隐藏它(显示:无))然后将该按钮添加为updatepanel async trigger并调用 _dopostback并传递该按钮ID

__doPostBack('<%= TheButton.ClientID %>', '');