jQuery触发asp.net单选按钮点击更新面板内

jQuery trigger asp.net radiobutton click inside of update panel

本文关键字:更新 触发 asp net 单选按钮 jQuery      更新时间:2023-09-26

我有一些代码,其中用户选择一个'包',这是通过jquery突出显示。我怎么能导致asp单选按钮在这个div被点击并执行其' 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中网络选项卡内的页面,不断发布页面,最终滞后而没有刷新。

我正在讨论的单选按钮是:

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

如何让jquery执行这个单选按钮的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,即包。

在更新面板中,你的DOM元素被异步回发返回的内容所取代,所以事件绑定被重置。

你需要在两个事件上附加事件处理程序:

(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 (display:none)如果你不显示它),然后添加该按钮作为updatepanel异步触发器和调用_dopostback并传递按钮id

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