【问题标题】:Onchange of dropdownlist containing javascript returning false doesnot stop calling the dropdownlist _SelectedIndexChange包含 javascript 返回 false 的下拉列表的 Onchange 不会停止调用下拉列表 SelectedIndexChanged
【发布时间】:2015-11-06 14:36:16
【问题描述】:

我在转发器中放置了一个下拉列表

<asp:Repeater ID="rptCommissionDistribution" runat="server" OnItemDataBound="rptCommissionDistribution_ItemDataBound"
                OnItemCreated="rptCommissionDistribution_ItemCreated" OnItemCommand="rptCommissionDistribution_ItemCommand">

<asp:DropDownList ID="ddlSplitType" runat="server" DataTextField="SplitTypeName" OnChange="return  confirm_change(this.id,this.value);" DataValueField="SplitTypeId" AutoPostBack="True">
</asp:DropDownList>
<asp:CheckBox ID="chkOverride" runat="server" AutoPostBack="true" OnChange="setdirty();" />
</asp:Repeater>

放置的javascript

<script type="text/javascript">
function confirm_change(id, value) {
    var dropdownid = id;
    var checkboxid = dropdownid.replace("ddlSplitType", "chkOverride");

    if (document.getElementById(checkboxid).checked == true) {          
        alert('clicked');
        return true;
    }
    else {            
        alert('not clicked');
        return false;
    }
}
</script>

在.cs页面上我们有

protected void ddlSplitType_SelectedIndexChanged(object sender, EventArgs e)
 {  
DropDownList ddlSplitType = sender as DropDownList;
RepeaterItem rptCommissionDistributionItem = ddlSplitType.Parent as RepeaterItem;       
CommissionDistributionController objCommissionDistributionController = new CommissionDistributionController();
***-----------And all Stuff--------------***
} 

我想要的是当 javascript “返回 false;”比 .cs 页面代码“ddlSplitType_SelectedIndexChanged”不应被调用,并且当 javascript“返回 true;”时那时我的cs页面代码“ddlSplitType_SelectedIndexChanged”应该被调用。

【问题讨论】:

    标签: javascript c# jquery asp.net c#-4.0


    【解决方案1】:

    应该这样做。 (由于您的 DDL 在中继器中,因此您必须先找到它)

    后面的代码

            protected void Page_Load(object sender, EventArgs e)
            {
                 //Only if the event argument was from my drop down add the event
                    if (Request.Params["__EVENTARGUMENT"] != null && Request.Params["__EVENTARGUMENT"].Equals("ddlSplitTypechange"))
                        ddlSplitType_SelectedIndexChanged(sender, e);
                    if (!Page.IsPostBack)
                    {
                        ddlSplitType.Attributes.Add("onchange", "confirm_change();");
                }
            }
            protected void ddlSplitType_SelectedIndexChanged(object sender, EventArgs e)
            {
    
            }
    

    在你的 JS 中

    function confirm_change(id, value) {
        var dropdownid = id;
        var checkboxid = dropdownid.replace("ddlSplitType", "chkOverride");
    
        if (document.getElementById(checkboxid).checked == true) {          
            alert('clicked');
        __doPostBack("ctl00$MainContent$ddlSplitType","ddlSplitTypechange");
        }
        else {            
            alert('not clicked');
            return false;
        }
    
        }
    

    你也可以试试这个

         <asp:DropDownList ID="ddlSplitType" runat="server" 
     AutoPostBack="true" onchange="javascript: return confirm_change();" OnSelectedIndexChanged="ddlSplitType_SelectedIndexChanged"></asp:DropDownList>
    

    希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      试试这个:

      ASP.NET:

      <asp:DropDownList
          ID="ddlTest1"
          runat="server"
          onChange="if (!jsFunction()) return false;"
          OnSelectedIndexChanged="ddlTest1_SelectedIndexChanged"
          AutoPostBack="True">
      </asp:DropDownList>
      

      Javascript:

      function jsFunction() 
      {
          return confirm("Yes or No?");
      }
      

      代码隐藏 (C#):

      protected void ddlTest1_SelectedIndexChanged(object sender, EventArgs e)
      {
          // Do Something
      }
      

      【讨论】:

        猜你喜欢
        • 2012-11-26
        • 1970-01-01
        • 1970-01-01
        • 2011-11-03
        • 2016-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多